jQuery .load()调用未在加载的HTML文件中执行JavaScript

这似乎只是与Safari有关的问题。我在Mac上尝试过4,在Windows上尝试过3,但仍然没有运气。

我正在尝试加载外部HTML文件,并执行嵌入的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调用中使用,但我想确保在所有浏览器中都可以做到这一点。

回答:

您正在将整个HTML页面加载到div中,包括html,head和body标签。如果您执行加载并且仅在加载的HTML中包含打开脚本,关闭脚本和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>

这对我在Safari 4中有效。

更新:添加了DOCTYPE和html名称空间以匹配我的测试环境中的代码。经过Firefox 3.6.13的测试,示例代码可以正常工作。

以上是 jQuery .load()调用未在加载的HTML文件中执行JavaScript 的全部内容, 来源链接: utcz.com/qa/397735.html

回到顶部