我的HTML中有2个div。
<div id="div1"></div>
<div id="div2"></div>
点击“div2”我想加载外部javascript文件,例如“https://abcapis.com/sample.js”。
我尝试在下面的onclick事件中包含JS文件,
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://abcapis.com/sample.js";
document.getElementsByTagName("head")[0].appendChild(script);
这包括head部分中的脚本标记,但由于脚本标记仅在页面加载时加载,因此未加载(如果我错了,请在此处更正)。
还有其他方法可以继续。
先谢谢。
答案 0 :(得分:19)
使用jQuery的$ .getScript()函数可以为你完成这项工作。
http://api.jquery.com/jQuery.getScript/
以下是一段示例代码:
$("button").click(function(){
$.getScript("demo_ajax_script.js");
});
如果您不使用jQuery,则必须学习如何使用AJAX将新脚本动态加载到页面中。
答案 1 :(得分:9)
您的代码几乎可以使用。您需要使用.setAttribute
。这是我的工作代码。我使用jQuery作为我的脚本:
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'jquery.min.js');
document.head.appendChild(script);
那就做了。
编辑:
更多信息。当您执行script.type = 'text/javascript'
之类的操作时,您正在对象上设置属性,但这不一定与将该属性与实际节点属性相关联。
答案 2 :(得分:2)
您使用的是jQuery吗?如果是,您可以尝试$.getScript()。
您可能还想查看answer。但基本上,你可以这样做:
<a href='linkhref.html' id='mylink'>click me</a>
<script type="text/javascript">
var myLink = document.getElementById('mylink');
myLink.onclick = function(){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "Public/Scripts/filename.js.";
document.getElementsByTagName("head")[0].appendChild(script);
return false;
}
</script>
答案 3 :(得分:1)
$("button").click(function(){
$.getScript("demo_ajax_script.js");
});
我错过的信息是,路径必须是绝对的。
答案 4 :(得分:0)
将此功能复制并粘贴到您的代码中。
<script type="text/javascript">
getScript=(url)=>{
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url);
if(document.body == null){
document.head.appendChild(script);
}else{
document.body.appendChild(script);
}
}
</script>
现在使用您的.js文件网址调用此函数。
示例:getScript('https://abcapis.com/sample.js');
信息:
DOMContentLoaded
或$(document).ready()
函数