您好我正在尝试创建一个javascript bookmarklet,它会将外部javascript源的链接添加到域外的页面。但是,当我运行书签时没有任何错误,并且页面上的代码永远不会改变。有任何想法吗?这是我正在尝试使用的书签。谢谢你的时间。
javascript:(function(){document.body.appendChild(document.createElement('script')).src='http://mycode.com/autopopulator.js';autopopulate();})();
答案 0 :(得分:2)
你也可以通过回调来实现这个目标:
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();});
(当然你会想要优化它来将它塞进书签中,但你明白了......)
答案 1 :(得分:0)
我从未尝试过创建书签。但我在网上找到了这个结合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>
答案 2 :(得分:0)
您需要添加
代码以下是示例代码:
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();