我想在 .js 文件中运行一个函数而不在我的页面中导入 我使用这段代码:
var js =("../../../static/js/file.js");
js.hi();
并在控制台中显示此错误:
未捕获的TypeError:undefined不是函数
但我有一个名为hi
的函数!
答案 0 :(得分:1)
方法1:使用jQuery.getScript
。
将jQuery.getScript()视为与CSS的@import等效的JavaScript。更进一步,使用它只在需要时加载JavaScript,并且你有一个精益组合。
样品:
if ($('a.email').length > 0){
$.getScript('js/jquery.mailto.js',function(){
$('a.email').mailto();
});
}
这一小段代码将检查对象是否存在,在这种情况下,该对象是与一类电子邮件的任何锚链接。如果在页面上找到此对象,则将加载相应的.js文件(js / jquery.mailto.js)并启动回调函数($('a.email')。mailto();)。如果未找到该对象,则不会加载该脚本。这假设该片段包含在文档就绪事件中。
来源:External JavaScript on Demand With $.getScript()
所以你可以做点什么
if(condition){
$.getScript('../../../static/js/file.js',function(){
hi();
});
}
方法2: Dynamically loading external JavaScript and CSS files
function loadjscssfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //if filename is an external CSS file
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
loadjscssfile("myscript.js", "js") //dynamically load and add this .js file
loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file
loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file