在浏览器</script>中加载页面后,在<script>中执行内容

时间:2013-06-05 10:37:49

标签: javascript jquery html

在我的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 <script> tag  之后 网页正在解析并加载到浏览器中?

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

改为插入脚本标记:

$(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'));

答案 2 :(得分:0)

如果对Detect if page has finished loading有所帮助,请查看http://api.jquery.com/load-event/

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

文档:

  

{{3}}

答案 3 :(得分:0)

您是否有理由在javascript中修改src属性?

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

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

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

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