2010-10-28 2 views
4

Проверьте эту ссылку. http://dev.twitter.com/pages/share_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

Обычно всплывающие блокировки не блокируют всплывающие окна вообще, они блокируют всплывающие окна, которые должны быть открыты без какого-либо действия пользователя. Это не так, если вы используете букмарклеты, потому что пользователь выбирает букмарклет перед всплывающим окном. При использовании букмарклета это может быть, что это не будет наблюдаться всплывающим блокировщиком, как сказал Ник (я думаю, что нет необходимости, ему следует доверять букмарклет).

Но на веб-странице это всплывающее окно также не будет заблокировано, если функция была вызвана после события click.

+0

привет .. спасибо за ваш комментарий. Я обновил свой пост. Я добавил код букмарклета, который открывает всплывающее окно, но он заблокирован браузером – priyank

+0

Я не могу сказать вам конкретный, как они блокируются (так как есть много блокировщиков, у каждого может быть свое поведение). Итак, я предполагаю: это не зависит от времени, ваш пример откроет всплывающее окно не напрямую, сначала нужно загрузить некоторые ресурсы (я пробовал с простым таймаутом, это не должно быть заблокировано). Я скорее думаю, что это проблема доступа к инструкциям. Прямой контекст между букмарклетом и функцией, открывающей всплывающее окно (инструкция для вызова функции приходит позже с загруженным скриптом, который, как я полагаю, больше не ведется). –

1

Букмарклеты не как правило, блокируются блокировщик всплывающих окон браузера, вы намеренно ссылающегося на него .... так что это всплывающее окно вы хотите, предположительно, так как вы добавили букмарклет в первую очередь.

+0

благодарит за ответ. Я написал этот букмарклет, который похож на то, что делает твиттер. – priyank

+0

Обновлено мое сообщение. Если я запустил это, браузер блокирует всплывающее окно. – priyank

1

Прежде всего всплывающие окна, созданные как ответ на действия пользователя, обычно не блокируются. Кстати, стандартный твиттер-буклет может не выпускать память, поэтому я предлагаю использовать расширенный twitter bookmarklet. Он позволяет выбирать текст на любой странице и размещать его в Twitter. И что более важно, он освобождает память, выделенную для всплывающего окна.

+1

Просьба подробно рассказать о проблеме с памятью. Я не упоминал об этом на вашей странице. –

Смежные вопросы