是否可以在页面加载后添加JavaScript并执行它

时间:2011-10-15 10:57:36

标签: javascript jquery

假设我有一个在页面加载后插入页面的JavaScript函数,我该如何调用该函数。例如,让事情变得简单。假设我进行Ajax调用以获取脚本的标记,并返回以下内容:

<script type="text/javascript">
function do_something() {
    alert("hello world");
}
</script>

如果我然后将此标记添加到DOM,我可以稍后调用do_something()吗?

我正在使用jQuery JavaScript框架。

3 个答案:

答案 0 :(得分:3)

您可以使用jQuery的$.getScript(...)函数。大多数情况下,这满足了在加载页面后异步加载JavaScript的需要。

以下是相应的文档:http://api.jquery.com/jQuery.getScript/

基本上你可以做类似

的事情
$.getScript("http://myhost.com/scripts/myscript.js", function(){
   //at this point the script has been attached to the page and processed
   //you can use it here
});

答案 1 :(得分:2)

更新抱歉,我错过了您使用的jQuery。你可以用你要回来的字符串来做到这一点:

$(str).appendTo(document.body);

...之后您可以立即致电do_something; live example


原始答案:

如果您控制另一端(接收ajax调用的部分),只需使用直接JavaScript代码进行回复,而不是ajax使用script元素:

var script = document.createElement('script');
script.src = /* ...your URL...*/;
document.body.appendChild(script);
do_something();

一旦您将脚本附加到文档中,脚本就会被解析并执行,正如您在上面我可以看到的那样,在do_something之后我很高兴地立即调用了appendChild

如果您愿意,也可以内联添加脚本文本。

答案 2 :(得分:0)

只需使用$('head').append('<script>...')将脚本添加到页面即可。 jQuery有一些特殊的例程来处理它并解析脚本标记并适当地为所有浏览器处理它们。