4

我有一个简单的 iFrame……</p>

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

我知道我无法在框架内的元素上捕获点击事件,但是在 iFrame 本身上进行简单的单击或鼠标按下怎么样?

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

这对我不起作用!

4

2 回答 2

7

jQuery 有一个名为.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');
于 2012-05-13T13:50:57.283 回答
1

由于网络浏览器的同源策略,您不能这样做。

但是您可以使用模糊事件和 mouseover/mouseout 事件的解决方法。这就是我的 iframeTracker jQuery 插件的工作原理,旨在跟踪 iframe 上的点击: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)
        }
    });
});

享受 !

于 2013-04-03T17:49:14.783 回答