Как отмечалось в этом ответе https://stackoverflow.com/a/3030893 он же Обнаружение события загрузки окна, открытого с помощью window.open , идеально подходит:
javascript: /* IE will use 1 ignore 1 w/ error, FF t'other way 'round */
(function(ow){
ow . addEventListener( 'load', function(){alert("loaded")}, false);
ow . attachEvent('onload', function(){alert("loaded")}, false);
}(window.open(prompt("Where are you going today?",location.href),"snapDown")))
Однако, другие комментарии иответы приводят к нескольким ошибочным заблуждениям, как объяснено ниже.
Следующий скрипт демонстрирует темпераментную переменчивость во времени определения onload
.Примените скрипт к быстрой загрузке location.href
, такой как file:///
, и некоторому медленному сайту, чтобы увидеть проблему.Можно увидеть либо сообщение onload
, либо его вообще нет (перезагрузив загруженную страницу, можно увидеть все 3 варианта).Предполагается также, что загружаемая страница сама по себе не определяет событие onload
, которое усугубит проблему.
Определения обработчика событий onload
определенно не находятся "внутри разметки HTML всплывающего окна", хотя онив конечном итоге будет находиться в DOM body
... HTML
.
javascript:
window.popup=window.open(location.href,'snapDown');
window.popup.onload=function(){alert("message one ")};
alert("message 1 maybe too soon\n"+window.popup.onload);
window.popup.onload=function(){alert("message two")};
alert("message 2 maybe too late\n"+window.popup.onload);
, что вы можете сделать:
- открыть иностранный URL
- на этом внешнем URL pg.В адресной строке введите
javascript: ...
URI
, он будет наследовать те же политики сайта, что и внешний URL-адрес
NB.Javascript, возможно, нужно добавить в закладки как букмарклет, поскольку адресные строки URI javascript:
не работают в последних (около 2012 года) браузерах - , что фактически дает междоменный доступ, но обратите внимание:
- javascript не свойственен веб-странице или сайту, что означает, что его происхождение имеет гражданство без гражданства и, таким образом, по существу удовлетворяет иммиграционным правилам css (сценарии x-site) и sop (та же политика происхождения)
- он вызывается вручную через адресную строку или закладки И
сценарий вручную введен в эти местоположения
Таким образом, можно изменить любую страницу, почти независимо от ее происхождения, например:
javascript:
if(confirm("wipe out links & anchors?\n"+document.body.innerHTML))
void(document.body.innerHTML=document.body.innerHTML.replace(/<a /g,"< a "))
(ну почти ...
jar:file:///usr/lib/firefox/omni.ja!/chrome/toolkit/content/global/aboutSupport.xhtml
Страница устранения неполадок FF в Mozilla и другие jar
архивыявляются исключениями)
В качестве другого примера:
Для обычного отключения узурпации Google целевой pg.нажмите, измените его rwt
функцию следующим образом:
javascript:void(rwt=function(unusurpURL){return unusurpURL})
и отметьте это как spay google
(neuteralize google
?) т.е.это «исправлено».
Затем эта закладка нажимается до того, как щелкают любые попадания google
, поэтому закладки любого из этих попаданий чистые, а не монгрелизированные извращенные аберрации, которые из них сделали google
.
тесты, выполненные с
window.navigator.userAgent=
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0
Следует отметить, что addEventListener
в Mozilla имеет только нестандартный четвертый логический параметр, который, если true
позволяет создавать триггеры ненадежного содержимогодля иностранных страниц.
ref:
element.addEventListener |Объектная модель документа (DOM) |MDN:
Взаимодействие между привилегированными и непривилегированными страницами |Фрагменты кода |MDN:
Закладка:
Обнаружение события загрузки окна, открытого с помощью window.open