2010-07-02 77 views
2

目标:创建一个小书签,该小书签调用打开弹出窗口的远程JavaScript文件。弹出窗口在功能上类似于Delicious的书签功能。创建不被阻止的小书签

背景:目前,我在这个JavaScript文件中使用window.open,但弹出窗口几乎被所有主流浏览器阻止。

对此的替代解决方案与Delicious编写书签的方式非常相似 - 通过书签本身内的JavaScript查询调用window.open。但是,我需要能够在将来修改我的JavaScript文件的其他内容,而不需要用户不断抓取书签的最新版本。

我已经确定要发生什么:由于window.open呼叫没有发生直接的点击用户的结果,浏览器觉得这是应该被阻止。这里是a source

This是我最近在创建对远程js文件调用时引用的教程。

下面是我的代码正在做的一个基本示例;该window.open/popup部分是我,包括唯一的显著部分,因为它是我觉得是造成并发症的唯一部分:远程的

例javascript文件:

if (typeof jQuery == 'undefined') { 
    var jQ = document.createElement('script'); 
    jQ.type = 'text/javascript'; 
    jQ.onload=runthis; 
    jQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
    document.body.appendChild(jQ); 
} else { 
    runthis(); 
} 

function runthis() { 
    window.open('http://www.google.com/', 'a title', 
     'location=yes,links=no,scrollbars=no,toolbar=no,width=550,height=550'); 
} 

我真的感谢任何帮助,因为这一直困扰着我一段时间!

+1

如果你能做到这一点,从外部包含文件,为什么不能每个垃圾邮件发送者和侵入性广告客户做同样的事情?如果您考虑到这个问题会带来哪些弊端,那么很容易就会明白为什么它会被每个浏览器主动阻止。 – 2010-07-02 03:32:15

+2

呃,这是一个小书签,用户必须主动点击它并且bookmarklets需要创建用户交互。 – tomdemuyt 2012-02-06 19:54:23

回答

0

一个看起来更好的方法,并阻止问题的侧面步骤是让书签在用户当前正在查看的页面中插入iframe。当我问这个问题时,结束采取这种方法。工作得很好。