首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery .load()调用不在加载的HTML文件中执行JavaScript

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

Stack Overflow用户
提问于 2009-05-20 20:07:51
回答 12查看 213.2K关注 0票数 85

这似乎只是一个与Safari相关的问题。我在Mac上试了4次,在Windows上试了3次,还是没有成功。

我正在尝试加载一个外部的超文本标记语言文件,并执行嵌入的JavaScript。

我尝试使用的代码是:

代码语言:javascript
复制
$("#myBtn").click(function() {
    $("#myDiv").load("trackingCode.html");
});

trackingCode.html看起来像这样(现在很简单,但会扩展一次/如果我让它工作的话):

代码语言:javascript
复制
<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调用中使用,但在继续之前,我希望确保这在所有浏览器中都是可能的。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-05-20 20:10:43

您正在将整个html页面加载到div中,包括HTML、head和body标记。如果加载时只有开始脚本、结束脚本和加载的JavaScript代码,会发生什么情况?

下面是驱动程序页面:

代码语言: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的内容:

代码语言:javascript
复制
<script type="text/javascript">
    alert("Outside the jQuery ready");
    $(function() {
        alert("Inside the jQuery ready");
    });
 </script>

这对我在Safari4中很有效。

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

票数 56
EN

Stack Overflow用户

发布于 2010-11-23 05:47:36

代码语言:javascript
复制
$("#images").load(location.href+" #images",function(){
    $.getScript("js/productHelper.js"); 
});
票数 41
EN

Stack Overflow用户

发布于 2011-09-07 15:11:18

这是之前的John Pick's solution的另一个版本,对我来说很好用:

代码语言:javascript
复制
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); } );
   }
   ...
});
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/889967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档