Javascript 使用DOM添加外部.js,然后从.js调用函数
我正试图建立一个书签。我希望最小化bookmarklette中javascript的大小,以便可以在外部文件中维护大部分代码。我的目标是。。。 1向页面添加一个外部.js文件。 2从该外部.js文件调用函数。 3.让该功能向页面添加额外的.js文件,例如JQuery源代码 这是我的1号密码。它起作用了Javascript 使用DOM添加外部.js,然后从.js调用函数,javascript,dom,bookmarklet,Javascript,Dom,Bookmarklet,我正试图建立一个书签。我希望最小化bookmarklette中javascript的大小,以便可以在外部文件中维护大部分代码。我的目标是。。。 1向页面添加一个外部.js文件。 2从该外部.js文件调用函数。 3.让该功能向页面添加额外的.js文件,例如JQuery源代码 这是我的1号密码。它起作用了 javascript:function bmksMain(){var script=document.createElement('script');script.src='http://loca
javascript:function bmksMain(){var script=document.createElement('script');script.src='http://localhost/bmks/bmksBmkMain.js';scriptObj=document.body.appendChild(script);}bmksMain();
下面是.js文件的内容
function bmksBmkMaster(){
alert('debug1');
var script, object;
script = document.createElement('script');
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
object = document.body.appendChild(script);
alert('debug2');
$("body").hide();
alert('debug3');
}
bmksBmkMaster();
当我将bookmarklette代码粘贴到地址栏并执行时,调试1和2会触发,然后它就会消失。然后,如果我在不刷新页面的情况下再次执行,所有三个调试都会启动,并且都能完美工作
我可以不在同一个函数/脚本中包含一个.js并使用它吗?有些奇怪的事情正在发生
提前谢谢
在IE7和最新的Chrome浏览器中进行了测试,请查看文章及其后续文章,以了解如何做到这一点。例如,使用全局$identifier是不明智的。以下是一种跨浏览器加载脚本的方法:
function loadScript(scriptUrl, callback){
var script = document.createElement('script');
script.type='text/javascript';
script.onload = function(){
callback();
callback = function(){};
}
script.onreadystatechange = function () {
if(script.readyState === 'loaded' || script.readyState === 'complete'){
callback();
callback = function(){};
}
}
script.src = scriptUrl;
document.getElementsByTagName('head').item(0).appendChild(script);
}
您可以这样使用它:
loadScript('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js', function(){
//hide body
});
好的,一个叫Jacob的用户已经告诉了我如何修复它,但随后他删除了他的答案。。。script.onload=函数{$body.hide;};IIRC这可能导致在某些版本的Opera中调用回调两次,我认为。在调用函数{}作为快速修复后,将其设置为回调。