【发布时间】:2011-12-15 21:24:49
【问题描述】:
我已经坚持了很长一段时间 - 任何帮助将不胜感激。
基本上我正在将 HTML 加载到页面中,但是加载的 HTML 需要在其中的特定位置包含一个外部脚本。我发现最好的方法是使用以下代码:
$('#blah').load('blah.htm',
function(){
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "[external script url + query string here]";
$('#blah_blah')[0].appendChild(script);
});
编辑: 我使用“appendChild”而不是 jQuery 的“append”的原因是 $.append 将脚本创建的视频播放器添加到完全错误的元素中。如果我使用 appendChild,它会被添加到指定的正确元素中。我认为这可能与 jQuery 的插入方法有关,如本答案所述: Can't append <script> element
我使用的代码在 Firefox 和 Chrome 中运行良好,但在 IE7 和 8 中我收到错误消息“无法获取属性 'appendChild' 的值:对象为空或未定义”,并且脚本标签不能在 DOM 中可见。
如果我包含该行:
$("#blah_blah")[0].appendChild(document.createTextNode("test"));
文本节点“test”被添加到 DOM,并且可以在页面上看到 - 所以看起来“appendChild”确实有效,但附加脚本标记存在问题。
这可能是 IE 特定的安全问题吗?
【问题讨论】:
-
为什么脚本需要在特定位置?
-
无复制。它对我有用...jsfiddle.net/QKM2D
-
脚本需要放在一个特定的位置,因为它用于第三方视频服务 - 视频播放器在脚本标签所在的位置呈现。不使用 jQuery append 的原因在提供的链接中。
-
感谢您创建 jsfiddle,但它显示了相同的行为 - 当我调用第三方脚本时,它在 FF 中运行良好,但在 IE 中出现错误。我想这一定是一个跨域问题。
标签: javascript jquery html ajax