【问题标题】:Execute contents inside <script> after loading the page in browser在浏览器中加载页面后执行 <script> 中的内容
【发布时间】:2013-06-05 10:37:48
【问题描述】:

在我的htmlpage中有一个脚本标签

类似的东西

<script id="loadmenu"></script>

上述脚本元素的“src”属性取决于托管 Web 应用程序的环境。

所以我写了这样的东西

$(document).ready(function(){
     $("#loadmenu").attr("src",SRConfig.WESHost + "/webapp/" + SRConfig.WESApp+ "/servlet/WPSNav?mod=iwswps&idkey=displayhome");
});

脚本正在从指定的源正常加载。但是只有在文档被解析并在浏览器中加载之后才会加载脚本。 因为我使用的是 $(document).ready()。

由于文档完成解析,脚本在加载后没有得到执行。有什么办法可以执行specific &lt;script&gt; tag 之后 网页正在被浏览器解析和加载?

【问题讨论】:

  • 您确定脚本已加载吗?当您更改脚本标签的“src”时,浏览器将不会下载脚本文件。在下面查看我的答案
  • 是的...加载后会像。但是 myMethod() 没有被执行,因为脚本是在页面解析之后加载的。
  • 使用浏览器内置的网络抓包功能查看脚本是否加载。我检查并没有看到它加载。只有在我们插入脚本标签时才会加载它。

标签: javascript jquery html


【解决方案1】:

看来您的 jquery 选择器不正确。应该是

$("#loadmenu").attr("src",SRConfig.WESHost + "/webapp/" + SRConfig.WESApp+ "/servlet/WPSNav?mod=iwswps&idkey=displayhome");

【讨论】:

  • 正如 Live java 所说的“脚本正在从指定的源正常加载”,我猜这是一个复制/粘贴错误,loadmenu 是在他/她的代码中定义的。
  • 拜托,复制粘贴错误!我用firebug调试过,脚本正在加载中
  • @Dropout:这不起作用。 OP 已更新问题。
  • @KhanhTO 感谢您的信息,但这不是我的答案。我只是指出上述用户对 jQuery 语法有一个很好的观点。
【解决方案2】:

改为插入脚本标签:

$(document).ready(function(){
    var scriptTag = $("<script/>");
    scriptTag.attr("src",SRConfig.WESHost + "/webapp/" + SRConfig.WESApp+ "/servlet/WPSNav?mod=iwswps&idkey=displayhome");
    $("head").append(scriptTag);
});

或使用类似的代码facebook

(function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "Your URL";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'loadmenu'));

【讨论】:

    【解决方案3】:

    看看Detect if page has finished loading 是否对您有帮助。

    基本上你可以使用带有窗口的 .load 函数来查看它是否完全加载并在之后触发你的脚本。

    文档:

    http://api.jquery.com/load-event/

    【讨论】:

    • 如何触发脚本?
    • 请阅读api.jquery.com/load-event 没那么长。您可以将 .load 函数“挂钩”到图像、脚本、框架、iframe 和窗口对象。
    【解决方案4】:

    您在 javascript 中修改 src 属性是否有原因?

    如果要加载的脚本路径由托管的 Web 应用程序确定,我猜您可以简单地执行以下操作:

    <script id="loadmenu" src="${SRConfig.WESHost}/webapp/${SRConfig.WESApp}/servlet/WPSNav?mod=iwswps&idkey=displayhome"></script>
    

    ${} 在您的 html 模板中被您的服务器端应用替换。

    我不熟悉论文SRConfig.* 背后的技术,所以我可能完全错了。

    【讨论】:

      猜你喜欢
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2019-03-11
      • 2012-12-04
      • 1970-01-01
      相关资源
      最近更新 更多