繁体   English   中英

如何添加外部JavaScript文件并通过bookmarklet运行功能?

[英]How do I add an external javascript file and run a function via bookmarklet?

嗨,我正在尝试制作一个javascript bookmarklet,它将外部javascript源的链接添加到域外的页面。 但是,当我运行书签时没有任何错误,并且页面上的代码永远不会改变。 有任何想法吗? 这是我正在尝试使用的书签。 谢谢你的时间。

javascript:(function(){document.body.appendChild(document.createElement('script')).src='http://mycode.com/autopopulator.js';autopopulate();})(); 

您还可以通过回调实现此目的:

    var addScript=function(filename,callback){
            var e=document.createElement('script');
            e.type = 'text/javascript';
            e.src = filename;
            if(callback){
                e.onloadDone=false;//for Opera
                e.onload=function(){e.onloadDone=true;callback();};
                e.onReadystatechange=function(){
                    if(e.readyState==='loaded'&& !e.onloadDone){
                        e.onloadDone=true;callback();
                    }
                }
            }
        if(typeof(e)!=='undefined'){
            document.getElementsByTagName('head')[0].appendChild(e);
        }
    }
addScript('http://yoursite.com/js/yourScript.js',function(){functionFromYourScript();});

(当然你会想要优化它来将它塞进书签中,但你明白了......)

我从未尝试过创建书签。 但是我在网上找到了这个结合了jQuery的例子,它可能对你有用。

http://www.latentmotion.com/how-to-create-a-jquery-bookmarklet/

它解释了如何链接到外部JS文件并在其中包含其他文件,但我认为您正在寻找的是:

<a href="javascript:(function(){var head=document.getElementsByTagName('head')[0],script=document.createElement('script');script.type='text/javascript';script.src='http://www.site.com/your-javascript.js?' + Math.floor(Math.random()*99999);head.appendChild(script);})(); void 0">Your Bookmarklet Name</a>

您需要添加代码

  1. 然后插入所需的脚本标记
  2. 使用计时器间隔重复检查导入脚本中的对象

这是示例代码:

function writeTags(){
    //write the script tags
}
function check(){
    // example for prototype library
    if(window.Prototype && Prototype.Version){
        doActualWork();
    }else{
        window.setTimeout(check, 200);
    }
}
function doActualWork(){
    // this your actual code that requires
    // the loaded library
}
writeTags();
check();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM