Обнаружение события загрузки окна, открытого с помощью window.open

Я бы рекомендовал использовать оператор унарного плюса, чтобы принудительно обрабатывать возможную строку как число в скобках, чтобы сделать код более читаемым, например:

(+varname)

Итак, в вашем это:

var num1 = '20',
    num2 = '30.5';

var sum = (+num1) + (+num2);

// Just to test it
console.log( sum ); // 50.5
35
задан Christopher Tarquini 13 June 2010 в 02:31
поделиться

3 ответа

Если документ всплывающего окна находится из другого домена, это просто невозможно.

Обновление, апрель 2015 г .: Я ошибался насчет этого: если вы владеете обоими доменами, вы можете использовать window.postMessage и сообщение событие в ] практически все браузеры , актуальные сегодня .

Если нет, то вы все равно не сможете сделать эту работу кросс-браузерной без помощи документа, загружаемого во всплывающее окно. Вы должны иметь возможность обнаруживать изменение во всплывающем окне, которое происходит после его загрузки, что может быть переменной, которую JavaScript устанавливает на всплывающей странице, когда он обрабатывает собственное событие load , или если у вас есть некоторый контроль над этим, вы можете добавить вызов функции в открывателе.

20
ответ дан 27 November 2019 в 04:29
поделиться

onload обработчик событий должен находиться внутри разметки HTML всплывающего окна.

1
ответ дан 27 November 2019 в 04:29
поделиться
var myPopup = window.open(...);
myPopup.addEventListener('load', myFunction, false);

Если вы заботитесь об IE, используйте следующую вторую строку:

myPopup[myPopup.addEventListener ? 'addEventListener' : 'attachEvent'](
  (myPopup.attachEvent ? 'on' : '') + 'load', myFunction, false
);

Как вы видите, поддержка IE довольно громоздка и ее следует избегать по возможности. Я имею в виду, что если вам нужно поддерживать IE из-за вашей аудитории, то, конечно, делайте это.

50
ответ дан 27 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: