2010-10-10 30 views
3

嗨我试图做一个JavaScript书签,将添加到外部JavaScript源的链接到域外的页面。然而,当我运行书签没有任何错误,页面上的代码不会改变。有任何想法吗?这是我试图使用的小书签。谢谢你的时间。如何添加外部JavaScript文件并通过书签运行功能?

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

你可能正确地附加了脚本标记。我怀疑问题在于你必须等待浏览器在该函数调用可以工作之前加载脚本。 – Pointy 2010-10-10 21:14:20

回答

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> 
+0

这仍然不显示任何更改。就好像它没有改变页面上的任何内容。 – NCX001 2010-10-10 21:19:23

0

您需要添加代码

  1. 插入需要的脚本代码,然后
  2. 使用定时器间隔反复LY检查来自进口脚本

这里对象的示例代码:

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();}); 

(当然你会想:

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(); 
+0

我很好奇我通过检查脚本中的对象来完成什么? – NCX001 2010-10-13 20:06:51

+0

如果您发现该对象,则知道该脚本已加载,并且您可以使用它的方法。这是在使用库时JavaScript中的一个常见检查 – 2010-10-13 20:54:54

2

你也可以用一个回调实现这一目标优化这个将它塞进小书签中,但你明白了......)

+0

heh,事实证明我自己需要它,所以这里是压缩版本(您只需将回调函数调用添加到此结尾)javascript:var www = function(f ,c){var e = document.createElement(“script”); e.type =“text/javascript”; e.src = f; if(typeof(e)!==“undefined”){if(c) {e.onloadDone = FALSE; e.onload =函数(){e.onloadDone = TRUE; C()};!e.onReadystatechange =函数(){如果(e.readyState === “加载” && e.onloadDone ){e.onloadDone = TRUE; C(e.innerHTML)}}} document.getElementsByTagName( “头”)[0] .appendChild(E)}}; – 2010-11-30 06:16:41

相关问题