ОК, когда я нахожу элемент страницы «opener» и назначаю обработчики следующим образом:
// in the popup page
$(function() {
var openerElement = window.opener.document.getElementById(theElementId);
$(openerElement).click(function() {
alert("Hello World!");
});
});
Тогда, к моему удивлению, нативные «настоящие» события работают просто отлично. Однако , пользовательские события, инициируемые со страницы открытия, не попадают на всплывающую страницу.Это имеет смысл, поскольку каждая страница имеет свою собственную маленькую вселенную jQuery.Однако я был явно неправ в том, что браузер не распространяет нативные события, поэтому спасибо за сегодняшний опыт обучения !!
Дополнительная информация - Из всплывающего окна (и аналогично любому дочернему элементу <iframe>
основной документ), вы также можете использовать
var thing_in_main_window = window.opener.$('#thingId');
, чтобы найти вещи в открывшемся окне.Тем не менее, просто используя объект jQuery на всплывающей странице , чтобы найти, что элемент не может работать, потому что jQuery не будет проходить по ссылке "window.opener" и искать там этот элемент.Когда вы вызываете $('#thingId')
на всплывающей странице, jQuery просто вызывает document.getElementById('thingId')
, используя объект document
для страницы popup .Если на этой странице нет элемента "thingId", он не будет найден.
оригинальный ответ:
Не думаю, что выпытаясь сделать будет работать.Браузер не собирается запускать какие-либо обработчики событий в окне, отличном от того, который содержит целевой элемент.
Однако вы можете перехватить событие в одном окне, а затем вызвать другое событие в другом окне.Когда вы сделаете это, вы, вероятно, захотите вызвать событие через объект jQuery на этой странице.Другими словами, вы бы сделали это:
$('#thing').click(function() {
otherWindow.jQuery.trigger("thing-clicked");
});