2010-10-18 2 views
5

Мне было интересно, как лучше всего было обнаружить, когда страница закончила загрузку, где эта страница находится в другой вкладке или окне ... и где страница, которую нужно загрузить, может быть любой страницей в Интернете и не под моим контролем.Javascript, чтобы обнаружить, когда страница загрузилась в другое окно в Firefox

Я использую только Firefox, и я не против, если для решения требуется расширение Firefox или сценарий Grease Monkey (я уже добавил конфигурацию/команды, чтобы разрешить доступ к страницам из разных доменов).

Код ниже показывает попытку. Иногда он обнаруживает, когда загружена начальная страница, но когда я нажимаю 'submit' для перезагрузки новой страницы в другое окно, она ее не обнаруживает.

Спасибо.

<html> 
<head> 
<script type="text/javascript"> 

    currentPageObj = window.open("http://www.bbc.co.uk", "currentPage"); 

    currentPageObj.addEventListener("load", function(){alert("loaded")}, false); 

</script> 
</head> 
<body> 

    <form action="http://www.example.com" target="currentPage"> 
     <input type="submit"> 
    </form> 

</body> 
</html> 
+0

Являются ли две страницы из одного домена? – Robusto

+0

Нет, это может быть любая веб-страница – spiderplant0

ответ

1

В другой странице просто обработчик события OnLoad, который вызывает метод в родительском окне (window.opener), чтобы делать то, что вы хотите. например на странице ребенка:

window.addEventListener('load', function() { 
    if (window.opener && !window.opener.closed) { 
    window.opener.childLoaded(); 
    } 
}, false); 

И иметь childLoad делать то, что вы хотите, в родительском окне. (Примечание: лучше всего сохранить ссылку на окно, которое вы хотите обработать, например, инициализировать var parentWindow = window;, потому что, когда вы звоните между окнами, это может запутать.)

+0

Спасибо andrewmu, но я забыл упомянуть, что в другом окне я загружаю страницу из другого домена, на который я не контролирую, и поэтому я не могу отредактировать эту страницу. – spiderplant0

+0

Хорошо .. это сложно. Если вы не совершите какое-то умное проксирование через свой сервер и не вставьте соответствующий ответ на страницу на своем пути назад. Например. поместите вышеуказанное в тег сценария, который получает вставку перед сообщением, прежде чем отправлять его в браузер. – andrewmu

 Смежные вопросы

  • Нет связанных вопросов^_^