В настоящее время я пишу букмарклет, который загружает и выполняет удаленный js-файл, добавив новый тег <script>
в текущее окно, например:
javascript:(function() {
if(typeof __bml_main != "undefined") return __bml_main.init();
var s= document.createElement('script');
s.type= 'text/javascript';
s.src= 'http://127.0.0.1:8000/media/bookmarklet.js';
void(document.body.appendChild(s));
})();
Моему букмарклету нужно выполнить некоторые манипуляции с dom, чтобы извлечь данные с просматриваемой страницы, а затем открыть новое всплывающее окно для их перечисления.
Дело в том, что если я хочу обойти блокировку всплывающих окон, я не могу открыть свое новое окно из внедренного сценария. Мне нужно открыть его с самого начала в коде букмарклета и получить доступ к нему позже, когда это необходимо.
Я пытался сделать что-то вроде этого:
javascript:var my_popup = window.open('http://127.0.0.1:8000/resources/manage/new/', 'newResourcePopup',config='height=200,width=400,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no');
(function() {
// script injection (...)
})();
, но если я тогда попытаюсь получить доступ к my_popup
из моего удаленно загруженного скрипта, большинство браузеров выдаст предупреждение безопасности и не позволит мне получить доступ к объекту Window. Это понятно, так как скрипт не из того же домена, что и отображаемая страница, но я застрял ...
Решением будет использование наложения div, но я бы действительно предпочел открыть окно в этом случае.
Есть какие-нибудь намеки?