2010-07-02 45 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。當我問這個問題時,結束採取這種方法。工作得很好。