Существует еще один способ работы с блокировщиком всплывающих окон, сначала включающий ссылку, наложенную на страницу, а затем позволяющую пользователю щелкнуть ее, чтобы сгенерировать всплывающее окно. Затем букмарклетный javascript может быть сохранен в отдельном файле. Вот как это делает прописная книжка Pinterest. Сначала они выбирают изображения со страницы и накладывают их непосредственно на страницу. Затем, когда пользователь нажимает, чтобы выбрать одну из фотографий, появляется всплывающее окно. Поскольку это действие было инициировано пользователем, всплывающее окно работает.
Вот код, который можно использовать для тестирования:
Поместите это в файл с именем букмарклет.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);
В качестве альтернативы, вы должны включить всплывающие окна в реальной ссылке букмарклета. Это, в свою очередь, будет означать, что единственный способ внести какие-либо изменения - это переустановка пользователем букмарклета.
EDIT: В дополнение к описанному выше методу, я позже обнаружил, что есть еще один способ обойти это, используя easyXDM. Это может помочь вам работать с той же политикой происхождения http://easyxdm.net/wp/
Используя это, вы можете использовать iframe для своего букмарклета, и вы даже можете иметь ссылку «закрыть» внутри вашего iframe, которая сможет удалить iframe из родительского стр.
Вы можете даже нарисовать id на этом якоре и сделать некоторые махинации, такие как document.getElementById ('myid'). Нажмите() и просто отпустите его с места в летучей мыши (серая область здесь ...) Родной DOM .click сложно найти поддержку документация, но современные хром и FF прекрасно работают в моих кратких тестах. –