Могу ли я вызвать функцию после загрузки iframe, добавленного jquery? - PullRequest
2 голосов
/ 27 февраля 2012

Это мой код :

​<div id="myContent​​​​​​​"></div>​

$('#myContent').html('<iframe height="200" frameborder="0" src="www.google.com"></iframe>');​

и я хотел бы, чтобы, когда вся страница в фрейме была полностью загружена, вызывали функцию, например alert("I'm finished");.

Как я могу это сделать?

P.S. не знаю, почему jsfiddle не ловит страницу Google:)

Ответы [ 4 ]

8 голосов
/ 27 февраля 2012

Вы можете сделать это с событием .load () (проверьте API для получения дополнительной информации).

Пример:

$('#myContent').html('<iframe id="winId" height="200" frameborder="0" src="www.google.com"></iframe>');

$('#winId').load(function() {alert('loaded')})
3 голосов
/ 27 февраля 2012

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

Одна и та же политика домена явно мешает разработчикам делать подобные вещи.

Хотя есть несколько обходных путей, например, код внутри iframe может изменить свой URL и продолжать передавать информацию, используя хэш-теги и т. Д.-versa.

2 голосов
/ 27 февраля 2012
$('#myContent').html('<iframe height="200" frameborder="0" src="www.google.com" onload="myfunc()"></iframe>');

Вы должны иметь на странице, содержащей IFRAME:

 function myfunc()
    {
       alert('.......');
    }

изменить: следующее не будет работать.

 $('#myContent').on('load','#myIdframe',function (){alert('.....');});

с тех пор:

Из документации: во всех браузерах событие загрузки не всплывает. [...] Такие события не поддерживаются для использования с делегированием, но их можно использовать, когда обработчик событий напрямую связан с элементом, генерирующим событие.

вот 2 примера:

1 работа, а 1 нет

http://jsbin.com/emuzop/2/edit#javascript,html

http://jsbin.com/emuzop/3/edit#javascript,html

1 голос
/ 27 февраля 2012

Создайте элемент, затем присоедините событие загрузки:

var frame = $('<iframe height="200" frameborder="0" src=http://www.google.com />');

$('body').append(frame);
frame.load(function(){
    alert('loaded');
});

скрипка:

http://jsfiddle.net/x7EXa/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...