2010-10-28 96 views
4

選中此鏈接。 http://dev.twitter.com/pages/share_bookmarklet爲什麼twitter bookmarklet不會被彈出式窗口攔截器阻止?

將bookmarklet拖到您的書籤欄並單擊它。它會打開一個彈出窗口。

爲什麼我的firefox/ie/chrome沒有阻止這個?

感謝

javascript: 
function loadScript(scriptURL) { 
    var scriptElem = document.createElement('SCRIPT'); 
    scriptElem.setAttribute('language', 'JavaScript'); 
    scriptElem.setAttribute('src', scriptURL); 
    document.body.appendChild(scriptElem); 
} 
var url = 'http://api.bit.ly/shorten?version=2.0.1&login=tweetthees&apiKey=Rxyz&longUrl=' + document.location; 
var longUrl = document.location; 
loadScript(url + '&callback=tweetme'); 
function tweetme(json) { 
    var shortLink = json.results[longUrl].shortUrl; 
    var finalUrl = 'http://twitter.com/home?status=Reading: ' + document.title + ' ' + shortLink; 
    window.open(finalUrl, "Share link", "width=1024,height=400,location=1,status=1,scrollbars=1"); 
} 

回答

6

通常彈出窗口阻止程序不會阻止彈出窗口的一般情況,它們只會阻止應該在沒有任何用戶操作的情況下打開的彈出窗口。如果您使用bookmarklets,情況並非如此,因爲用戶在彈出窗口打開之前選擇了小書籤。當使用小書籤時,它可能是,這不會被彈出式窗口攔截器觀察到,就像Nick說的那樣(我認爲沒有必要,小書籤應該是可信的)。

但是在網頁中,如果該功能在點擊事件後被調用,該彈出窗口也不會被阻止。

+0

嗨..感謝您的評論。我已更新我的帖子。我已經添加了小書籤代碼,它打開了一個彈出窗口,但它被瀏覽器屏蔽了 – priyank 2010-10-29 01:46:35

+0

我不能告訴你具體的,它們如何阻止(因爲有很多阻滯劑,每個人都可能有他自己的行爲)。所以我的猜測是:它不依賴於時間,你的例子不會直接打開彈出窗口,它首先必須加載一些資源(我嘗試了一個簡單的超時,這不會被屏蔽)。我寧願認爲,這是訪問說明的問題。書籤和打開彈出窗口的函數之間沒有直接上下文關係(調用函數的指令隨後加載了腳本,所以我認爲它不再被信任)。 – 2010-10-29 20:54:28

1

書籤工具通常不被瀏覽器阻止的彈出式窗口攔截,你故意調用它....所以這是你想要的彈出,大概,因爲你加入書籤放在第一位。

+0

感謝您的回答。我寫了這個書籤,它和Twitter的功能類似。 – priyank 2010-10-29 01:05:08

+0

更新了我的文章。如果我運行它,瀏覽器將阻止彈出窗口。 – priyank 2010-10-29 01:20:10

1

首先,作爲對用戶操作的響應創建的彈出窗口通常不會被阻止。順便說一句,標準的twitter小書籤可能不會釋放內存,所以我建議使用增強twitter bookmarklet它允許選擇任何頁面上的文本並將其發佈到Twitter。更重要的是它釋放分配給彈出窗口的內存。

+1

請詳細說明內存問題。我在你的網頁上看不到它。 – 2012-04-09 04:39:02

相關問題