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

是否可以在页面加载后添加JavaScript并执行它,javascript,jquery,Javascript,Jquery,假设我有一个JavaScript函数,在页面加载后插入到页面中,那么我如何调用该函数。例如,让我们保持简单。假设我进行Ajax调用以获取脚本的标记,并返回以下内容: <script type="text/javascript"> function do_something() { alert("hello world"); } </script> 函数do_something(){ 警报(“你好世界”); } 如果我随后将此标记添加到DOM中,我可以稍后调用

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

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

函数do_something(){
警报(“你好世界”);
}
如果我随后将此标记添加到DOM中,我可以稍后调用
do\u something()


我正在使用jQuery JavaScript框架。

更新对不起,我错过了您使用jQuery的消息。您可以使用要返回的字符串执行此操作:

$(str).appendTo(document.body);
…之后,您可以立即调用
do\u something


原始答复:

如果您控制着另一端(接收ajax调用的部分),只需让它用直接的JavaScript代码进行回复,并使用
script
元素代替ajax即可:

var script = document.createElement('script');
script.src = /* ...your URL...*/;
document.body.appendChild(script);
do_something();
当您将脚本附加到文档中时,脚本就会被解析并执行,正如您可以从上面看到的那样,在执行
appendChild
之后,我很高兴地立即调用了
do\u something


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

更新对不起,我没有注意到您正在使用jQuery。您可以使用要返回的字符串执行此操作:

$(str).appendTo(document.body);
…之后,您可以立即调用
do\u something


原始答复:

如果您控制着另一端(接收ajax调用的部分),只需让它用直接的JavaScript代码进行回复,并使用
script
元素代替ajax即可:

var script = document.createElement('script');
script.src = /* ...your URL...*/;
document.body.appendChild(script);
do_something();
当您将脚本附加到文档中时,脚本就会被解析并执行,正如您可以从上面看到的那样,在执行
appendChild
之后,我很高兴地立即调用了
do\u something


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

只需使用
$('head')。追加('…')
即可将脚本添加到页面中。jQuery有专门的例程来处理这个问题,解析脚本标记,并针对所有浏览器适当地处理它们。

只需使用
$('head')。append('…')
即可将脚本添加到页面中。jQuery有专门的例程来处理这个问题,解析脚本标记,并为所有浏览器适当地处理它们。

您可以使用jQuery的
$.getScript(…)
函数。通常,这可以满足在页面加载后异步加载JavaScript的需要

以下是相关文件:

基本上你可以这样做

$.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
});

您可以使用jQuery的
$.getScript(…)
函数。通常,这可以满足在页面加载后异步加载JavaScript的需要

以下是相关文件:

基本上你可以这样做

$.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
});