这似乎只是与Safari相关的问题.我在Mac上尝试了4次,在Windows上尝试了3次,但我仍然没有运气.
我正在尝试加载外部HTML文件并使嵌入的JavaScript执行.
我试图使用的代码是这样的:
$("#myBtn").click(function() { $("#myDiv").load("trackingCode.html"); });
trackingCode.html
看起来像这样(现在很简单,但如果我开始工作,会扩展一次):
Tracking HTML File
我在IE(6和7)和Firefox(2和3)中看到了两条警报消息.但是,我无法在Safari中看到这些消息(我需要关注的最后一个浏览器 - 项目要求 - 请不要进行火焰战争).
有关为什么Safari忽略trackingCode.html
文件中的JavaScript的任何想法?
最后,我希望能够将JavaScript对象传递给此trackingCode.html
文件,以便在jQuery ready调用中使用,但我希望确保在我走这条路之前在所有浏览器中都可以实现.
您正在将整个HTML页面加载到div中,包括html,head和body标记.如果您执行加载并在您加载的HTML中只有开始脚本,关闭脚本和JavaScript代码会发生什么?
这是驱动程序页面:
jQuery Load of Script
以下是trackingCode.html的内容:
这适用于Safari 4.
更新:添加了DOCTYPE和html命名空间以匹配我的测试环境中的代码.使用Firefox 3.6.13测试并且示例代码有效.
$("#images").load(location.href+" #images",function(){ $.getScript("js/productHelper.js"); });
之前的另一个版本的John Pick的解决方案,这对我来说很好:
jQuery.ajax({ .... success: function(data, textStatus, jqXHR) { jQuery(selecteur).html(jqXHR.responseText); var reponse = jQuery(jqXHR.responseText); var reponseScript = reponse.filter("script"); jQuery.each(reponseScript, function(idx, val) { eval(val.text); } ); } ... });
我意识到这是一个较旧的帖子,但对于任何人来到这个页面寻找类似的解决方案......
http://api.jquery.com/jQuery.getScript/
jQuery.getScript( url, [ success(data, textStatus) ] )
url
- 包含发送请求的URL的字符串.
success(data, textStatus)
- 请求成功时执行的回调函数.
$.getScript('ajax/test.js', function() { alert('Load was performed.'); });
如果您将HTML字段加载到动态创建的元素中,这似乎不起作用.
$('body').append(''); $('#loader').load('htmlwithscript.htm');
我看一下firebug DOM,根本没有脚本节点,只有HTML和我的CSS节点.
有谁遇到过这个?