Может ли jQuery связываться с событием загрузки iframe? - PullRequest
0 голосов
/ 26 октября 2011

Я знаю, что jQuery не может привязаться к событию onchange ввода файла. Это также тот случай, когда он не может связываться с событием onload Inframe?

С этим HTML,

<iframe src="http://jsfiddle.net" onload="alert('js alert');"></iframe>

и этот javascript,

$("iframe").live("onload",function(){alert('jq alert');});

Я получаю предупреждение js alert, а не jq alert, поэтому jQuery не привязывается к событию onload.

Демонстрация JSFiddle .

Я не могу понять, почему jQuery не может привязаться к событию onload во времени (как сказал ThiefMaster ). onload так отличается от других событий?

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

Событие уже сработало в точке, где вы зарегистрировали обработчик события. Если вам нужно обработать событие onload и вы хотите избежать уродливых встроенных обработчиков событий, создайте iframe с помощью jQuery и присоедините обработчик событий перед установкой URL-адреса или присоединением его к документу.

0 голосов
/ 27 октября 2017

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

Вот решение, чтобы поймать событие:

HTML

<iframe src=""></iframe>

JS

$(document).ready(function() {
  $("iframe").load(function() { alert('load complete'); });
  $("iframe").error(function() { alert('error occurs'); });
  $("iframe").attr("src", "http://google.com");
});

Когда вы предоставляете src, происходит событие загрузки / ошибки. Поэтому перед тем, как предоставить src, свяжите события, которые вы хотите обработать.

Вы также можете использовать этот трюк для <img>!

...