【发布时间】:2011-09-08 17:17:57
【问题描述】:
我正在处理 2 个文件。第一个文件是主页,它使用 .load() 来显示第二个文件。 Safari 在第一页上运行 jquery 就好了,但它似乎没有在通过 .load() 检索的文件中运行 jquery。我尝试将 alert() 作为第一行
$(document).ready(function(){});
而且它根本不在 Safari 中运行。
在 Chrome 中,所有 jquery 都按预期运行。任何线索可能导致这种情况?
编辑:这是我遇到的问题的一个小例子:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#loadStuffHere').load('example1b.html');
});
</script>
</head>
<body>
<div id="loadStuffHere"></div>
</body>
</html>
这是第二页(example1b.html):
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#test').click(function() {
alert("This code executes in Chrome but not Safari.");
});
});
</script>
</head>
<body>
<p id="test">This is what is being loaded</p>
</body>
</html>
【问题讨论】:
-
您能否发布一个完整的代码示例来展示该问题?没有代码就无法判断出了什么问题。
-
嗯,这在 Safari 中对我来说没问题,虽然它看起来有点奇怪——你不会得到一个无效的文档,有两个
<html>、<head>等,部分,加载后?或者浏览器会将它们过滤掉(可能包括过滤掉你的<script>,如果它过滤了重复的<head>)?如果我希望您只加载带有脚本和其中的段落的页面片段。另外,您使用的是什么版本/平台的 Safari? -
另外,不确定在将 HTML 加载到已加载页面时,准备好的文档是否会再次触发。也许这是导致问题的原因?
-
马特你似乎是对的。我删除了 和 现在它可以工作了(显然文档准备好再次触发)。
-
很高兴你能成功。我已经添加了一个答案,其中包含我认为正在发生的事情的更多细节。
标签: jquery safari cross-browser