php – 如何在不使用eval()的情况下从服务器动态加载和执行Javas
发布时间:2020-12-13 21:39:36 所属栏目:PHP教程 来源:网络整理
导读:我正在编写一个 PHP框架,它允许 PHP开发人员使用PHP类创建带有表单,网格,tabpanel和菜单的ExtJS接口. 例如,为了创建TabPanel,PHP类实例化了一个URL数组,当用户单击选项卡标题时,这些URL会动态加载. 为了做到这一点,我使用以下Javascript函数,它通过AJAX调用
我正在编写一个
PHP框架,它允许
PHP开发人员使用PHP类创建带有表单,网格,tabpanel和菜单的ExtJS接口.
例如,为了创建TabPanel,PHP类实例化了一个URL数组,当用户单击选项卡标题时,这些URL会动态加载. 为了做到这一点,我使用以下Javascript函数,它通过AJAX调用加载PHP页面并执行其中的任何脚本. function loadViewViaAjax(url) { Ext.Ajax.request({ url: url,success: function(objServerResponse) { var responseText = objServerResponse.responseText; var scripts,scriptsFinder=/<script[^>]*>([sS]+)</script>/gi; while(scripts=scriptsFinder.exec(responseText)) { eval(scripts[1]); } } }); } 我经常阅读as in the answers to this question,通常不需要使用eval(),因为你需要用eval()来完成其他方式.我也理解在通过AJAX加载的PHP页面中执行脚本会带来安全风险,需要以其他方式锁定,所以我想找到另一种更安全的方法来做到这一点. 在没有eval()的情况下从服务器动态加载和执行javascript的替代方法是什么,这样我就可以使用与上面脚本相同的功能,即TabPanels只在选项卡上加载和执行来自服务器的Javascript点击标题? 解决方法
您始终可以通过脚本注入加载其他Javascript.如果您创建一个新的SCRIPT元素并将其放在DOM中,浏览器将下载该脚本并执行它.
作为简化示例,您可以使用: var newScript = document.createElement('script'); newScript.setAttribute('src','http://www.example.com/url/of/your/script.php'); document.body.appendChild(newScript); 如果您想要更安全的方法,我建议研究“JSONP”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |