Вопрос по iframe, jquery – Клик-событие на iframe?

3

У меня есть простой iFrame & # x2026; & # xA0;

<code><iframe src="url" width="980px" height="90px" id="inviteFrame" name="inviteFrame" scrolling="no"></iframe>
</code>

Я знаю, что не могу отследить события щелчка на элементах внутри фрейма, но как насчет простого щелчка или перемещения мыши на самом iFrame?

<code>$('#inviteFrame').click(function() {
    console.log('test');
    $(this).attr('height', '140px');
});
</code>

Это не работает для меня!

На самом деле да, с поддомен моей страницы. Поэтому я нахожусь на & quot; url.com & quot; и iframe src - это "subdomain.url.com" & # X2026; сейчас я локально и просто удивляюсь, как я могу поймать событие щелчка при нажатии на него. matt
Вы отображаете страницу изyour server вiframe? VisioN

Ваш Ответ

2   ответа
1

та же политика происхождения.

Но вы можете использовать обходной путь с событиями размытия и событиями mouseover / Mouseout. Вот как работает мой плагин iframeTracker jQuery, предназначенный для отслеживания кликов по фреймам:https://github.com/finalclap/iframeTracker-jquery

Вот пример:

jQuery(document).ready(function($){
    $('.iframe_wrap iframe').iframeTracker({
        blurCallback: function(){
            // Do something when iframe is clicked (like firing an XHR request)
        }
    });
});

Наслаждайтесь !

Здравствуйте, @Vince, я использую ваш плагин для чего-то подобного, но у меня есть некоторые проблемы. Можете ли вы предложить какую-либо помощь по моему другому вопросу здесь?stackoverflow.com/questions/25891050/…
7

.contents (), что при использовании наiframe элемент возвращает документ iframe.

// Get a reference to the iframe document
var iframeDoc = $('#inviteFrame').contents().get(0);

Теперь вы можете привязать к нему событие, получить размеры, стили различных элементов и т. Д .:

// Get width of iframe document
$(iframeDoc).width();

// Get height of iframe document
$(iframeDoc).height();

// Bind event to iframe document
$(iframeDoc).bind('click', function( event ) {
    // do something
});

// Get the style of an element in the iframe
$('div', iframeDoc).css('backgroundColor');
Это также работает для iframe от третьей стороны? Кажется, не в соответствии с моим тестом.
Это, конечно, работает, только если содержимое iframe принадлежит одному домену, верно? matt
@clwen Если Iframe пришел из другого домена, он не будет работать из-за междоменной обработки запросов jQuery. Вы можете попытаться форсировать межсайтовый скриптинг (начиная с jQuery 1.5), используя:jQuery.support.cors = true;, Вы можете просмотреть документациюhere.
@zuul до сих пор не работает, но все равно спасибо.

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