php – 如何在不使用eval()的情况下从服务器动态加载和执行Javascript?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何在不使用eval()的情况下从服务器动态加载和执行Javascript?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个 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[^>]*>([\s\S]+)<\/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”.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何在不使用eval()的情况下从服务器动态加载和执行Javascript?全部内容,希望文章能够帮你解决php – 如何在不使用eval()的情况下从服务器动态加载和执行Javascript?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。