微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – jquery .load()不加载外部JS

我使用没有选择器的jquery.load()将外部内容加载到div元素中.如果加载的内容嵌入了JS,则JS按预期工作.但是,如果内容包含带有src = path-to-js-code的脚本标记,则不会加载js-code.

在这个观察中是否正确,如果有的话,除了在加载的内容中嵌入JS之外还有一个很好的解决方案吗?

编辑:
一些澄清和观察:

加载我正在使用的内容

$("#DivId").load("path/to/content.PHP", CallbackFunction(response, status, xhr) {
    error checking and post processing code
});

将加载代码更改为:

$.get("path/to/content.PHP", CallbackFunction(response, status, xhr) {
    error checking
    $("#DivId").html(response);
    post processing
});

似乎没有改变行为(更多关于下面的行为)

我没有尝试解析响应以检索脚本src然后使用getScript().

现在更多关于行为……

使用Firefox,似乎外部JS已加载,但仅限于距离上次加载约2分钟.我没有看到Firebug中的尝试,除非在外部JS的最后一次加载后刷新大约2米. (奇怪的).当我进行JS代码更改并进行刷新时,它没有加载我的新代码,因此也没有加载原始问题.

所以我会根据这个澄清的行为(2m缓存?)撤回我的问题.

谢谢.

解决方法:

.load()和.html()jQuery方法都使用.innerHTML属性.这不会执行使用< script>添加的脚本标签.使用常规的AJAX调用,例如.get()然后在回调中使用.append()来添加你的HTML字符串,脚本将在解析后运行,例如

$.get("path/to/content.PHP", function(response, status, xhr) {
    // error checking
    $("#DivId").append(response); // Any <script> tags in the response string will execute
    // post processing
});

事情是你需要确保你运行受信任的代码,如果它是由.append()添加

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐