Существует еще один способ работы с блокировщиком всплывающих окон: сначала включить ссылку, наложенную на страницу, а затем позволить пользователю щелкнуть ее, чтобы создать всплывающее окно. Javascript букмарклет может быть сохранен в отдельном файле. Вот как букмарклету Pinterest удается это сделать. Сначала они выбирают изображения со страницы и накладывают их прямо на страницу. Затем, когда пользователь нажимает, чтобы выбрать одну из фотографий, появляется всплывающее окно. Поскольку это действие было инициировано пользователем, всплывающее окно работает.
Вот код, который вы можете использовать для проверки:
Поместите это в файл с именем bookmarklet.js
var popupProperties='width=600,height=400,toolbar=0,location=0,resizable=1';
var newA = document.createElement("a");
var url = 'http://www.stackoverflow.com';
newA.setAttribute("href","javascript:window.open(url,'Hi',popupProperties);");
newA.setAttribute("style","position:fixed;z-index:9999999;top:0;left:0;width:100px;height:100px;color:#000;background:#fff;display:block;");
var newT = document.createTextNode("Open this");
newA.appendChild(newT);
document.body.appendChild(newA);
И тогда ваша ссылка на букмарклет может быть такой:
javascript:var jsCode = document.createElement('script');jsCode.setAttribute('src', 'http://localhost/bookmarklet.js?r='+Math.random()*99999999);document.body.appendChild(jsCode);
Кроме того, вам нужно включить всплывающее окно в фактическую ссылку на букмарклет. Что, в свою очередь, будет означать, что единственный способ внести какие-либо изменения - переустановить букмарклет для пользователя.
РЕДАКТИРОВАТЬ: В дополнение к вышеописанному методу, позже я обнаружил, что есть еще один способ обойти это с помощью easyXDM. Это может помочь вам обойти ту же политику происхождения http://easyxdm.net/wp/
Используя это, вы можете использовать iframe для своего букмарклета, и у вас даже может быть ссылка "close" внутри вашего iframe, которая сможет удалить iframe с родительской страницы.