Как я могу определить, когда источник iframe изменился? - PullRequest
6 голосов
/ 02 июля 2010

Я хочу определить, когда пользователь щелкает ссылку в iframe и изменяет источник iframe, потому что я хочу изменить его размер. Также я использую jQuery. Каков наилучший способ обнаружить это?

На самом деле мне нужно что-то вроде этого (этот пример в jQuery, он не работает, я представил это)

$('#iframe').live('load', function(){ alert('src is changed')});

Ответы [ 2 ]

13 голосов
/ 02 июля 2010

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

<iframe src="/test.html" onLoad="alert(this.contentWindow.location);"></iframe>

Предупреждение появится при каждом изменении местоположения в iframe.Он работает во всех современных браузерах, но может не работать в некоторых очень старых браузерах, таких как IE5 и ранняя версия Opera.( Источник )

Обратите внимание, что вы не сможете получить доступ к contentWindow.location, если iframe находится в другом домене или субдомене, но событие onLoad будет по-прежнему запускаться.

3 голосов
/ 02 июля 2010

Это не совсем чистое решение, но оно будет работать: вы можете создать таймер, который периодически проверяет, изменился ли источник iframe.

var prevSrc = '';
function check() {
  var curSrc = $('#iframe').attr('src');
  if (curSrc != prevSrc) {
    // source has changed; do something
    prevSrc = curSrc;
  }
}

window.setInterval(check, 1000); // 1 sec - this can be anything you want
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...