这似乎只是一个与Safari相关的问题。我在Mac上试了4次,在Windows上试了3次,还是没有成功。
我正在尝试加载一个外部的超文本标记语言文件,并执行嵌入的JavaScript。
我尝试使用的代码是:
$("#myBtn").click(function() {
$("#myDiv").load("trackingCode.html");
});
trackingCode.html
看起来像这样(现在很简单,但会扩展一次/如果我让它工作的话):
<html>
<head>
<title>Tracking HTML File</title>
<script language="javascript" type="text/javascript">
alert("outside the jQuery ready");
$(function() {
alert("inside the jQuery ready");
});
</script>
</head>
<body>
</body>
</html>
我在IE (6 & 7)和Firefox (2 & 3)中都看到了警告消息。但是,我无法在Safari中看到消息(我需要关注的最后一个浏览器-项目要求-请不要激战)。
对于为什么Safari忽略trackingCode.html
文件中的JavaScript有什么想法吗?
最终,我希望能够将JavaScript对象传递给这个trackingCode.html
文件,以便在jQuery ready调用中使用,但在继续之前,我希望确保这在所有浏览器中都是可能的。
发布于 2009-05-20 20:10:43
您正在将整个html页面加载到div中,包括HTML、head和body标记。如果加载时只有开始脚本、结束脚本和加载的JavaScript代码,会发生什么情况?
下面是驱动程序页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Load of Script</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1.3.2");
</script>
<script type="text/javascript">
$(document).ready(function(){
$("#myButton").click(function() {
$("#myDiv").load("trackingCode.html");
});
});
</script>
</head>
<body>
<button id="myButton">Click Me</button>
<div id="myDiv"></div>
</body>
</html>
下面是trackingCode.html的内容:
<script type="text/javascript">
alert("Outside the jQuery ready");
$(function() {
alert("Inside the jQuery ready");
});
</script>
这对我在Safari4中很有效。
更新:添加了DOCTYPE和html名称空间,以匹配我的测试环境中的代码。使用Firefox 3.6.13进行了测试,示例代码可以正常工作。
发布于 2010-11-23 05:47:36
$("#images").load(location.href+" #images",function(){
$.getScript("js/productHelper.js");
});
发布于 2011-09-07 15:11:18
这是之前的John Pick's solution的另一个版本,对我来说很好用:
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); } );
}
...
});
https://stackoverflow.com/questions/889967
复制相似问题