Bookmarklet window.open заблокирован большинством браузеров, вкусно / тумблер не работает - PullRequest
1 голос
/ 28 апреля 2011

Привет, ребята. Веб-сайт, над которым я работаю, требует букмарклет, запускаемый с панели закладок.Я заметил, что некоторые браузеры блокируют мой букмарклет.

Однако, аналогичные букмарклеты, такие как Tumblr, Twitter и Delicious ', имеют обходные пути, когда их страницы букмарклетов не блокируются.

Мой текущий скрипт запуска выглядит так:

javascript:void(window.open(%22http://mywebsite.com/share/form?
            u=%22+encodeURIComponent(location.href)+%22
            &t=%22+encodeURIComponent(document.title),
            %xz%22,%22status=0,toolbar=0,location=0,menubar=0,resizable=false,scrollbars=false,height=379,width=379%22));

Это простой window.open, которого явно недостаточно для обработки определенных исключений.

Сайты, представленные ниже, это скрипт запуска Delicious, все они имеют обходные пути, очень похожие на приведенные ниже:

javascript:(function(){
f='http://www.delicious.com/save
?url='+encodeURIComponent(window.location.href)+
'&title='+encodeURIComponent(document.title)+
'&notes='+encodeURIComponent(''+(window.getSelection?window.getSelection():document.getSelection?document.getSelection():document.selection.createRange().text))+
'&v=6&';
a=function(){
    if(!window.open(f
    +'noui=1&jump=doclose','deliciousuiv6','location=yes,links=no,scrollbars=no,toolbar=no,width=550,height=550'))
    location.href=f+'jump=yes'};
if(/Firefox/.test(navigator.userAgent))
    {setTimeout(a,0)}else{a()}})()

Кажется, что они добавляют некоторые дополнительные параметры GET к URL, если пользовательский агент - firefox.Тогда я предполагаю, что в этом случае сценарии инициализации при фактической загрузке страницы из букмарклета как-то обрабатывают это исключение?

Кто-нибудь имел опыт решения этой проблемы?Вы могли бы указать мне какие-либо ресурсы или советы?Я застрял на этом контрольно-пропускном пункте на некоторое время.

Заранее спасибо

1 Ответ

0 голосов
/ 05 мая 2011

восхитительная закладка напрямую не вызывает window.open () - она ​​создает функцию (там она называется a), которая затем выполняется в setTimeout(a,0) для Firefox (я предполагаю, что у вас проблема в Firefox ).

Вы можете попробовать аналогичный метод и посмотреть, работает ли он для вас.

...