Если ваш iframe исходит из другого домена, как в вашей скрипке, тогда ваш код JavaScript не имеет никакого доступа к его содержимому, извините!
Как @Max poins, вы можете использовать postMessage()
или фрагмент URL хак для связи с IFRAME в другом домене, если есть код в этом IFRAME, чтобы справиться с этой связью с той стороны.
С iframe от tumblr.com вы можете проверить их документацию, чтобы узнать, говорит ли он об использовании этой страницы в iframe и общении с ней через барьер домена.
Теперь, если вы говорите об iframe из того же домена в качестве своей страницы, то это легко. Учитывая элемент iframe
в переменной с именем myframe
, вы можете использовать myframe.contentWindow
, чтобы получить его объект window
и myframe.contentWindow.document
, чтобы получить его объект document
. Оттуда вы можете делать то, что вам нужно. Например:
var $myframe = $('#myframe'),
myframe = $myframe[0],
myframewin = myframe.contentWindow,
myframedoc = myframewin.document;
$(myframedoc).find('a').on('click', function() {
alert('Clicked!');
});
Вы можете все еще есть некоторые проблемы, используя копию JQuery на главной странице, чтобы получить доступ к вещам в IFRAME, но должны быть лучше удачи с последними версиями. В худшем случае вы можете использовать собственные DOM-события и методы для этого, но jQuery работает в this updated fiddle.
Эта скрипка использует document.write для размещения контента в iframe, но код jQuery, обращаясь к кадру, будет таким же. Разумеется, единственное, на что нужно обратить внимание, это то, был ли iframe полностью загружен, когда вы пытаетесь получить к нему доступ.
Я думаю вы можете слушать для load
события на iframe
элемента, содержащего страницы, но в худшем случае вы можете использовать setTimeout()
или setInterval()
и ждать элементов, которые вы ищете, чтобы стать доступным.
обновил свой ответ ... jsfiddle не может работать, но она по-прежнему дает мне неприятности на сайте с тот же домен, что и iframe. Кроме того, он должен все же быть в состоянии предупредить, когда сам iframe нажат, не так ли? потому что это не имеет никакого отношения к тому, что является содержимым iframe! –
Пожалуйста, не используйте Google для справки. Укажите на конкретный сайт (wikipedia должно быть хорошо) –
Спасибо! Надеюсь, это работает :) –