jQuery - 来自iframe的动态创建元素的事件绑定

时间:2016-12-19 02:59:18

标签: javascript jquery iframe click

我想将onClick事件处理程序绑定到iFrame中的每个锚点。将iframe视为IM /聊天客户端,因此iframe加载时不存在锚链接。我无法控制iFrame源,因此锚点不能设置任何属性。

赞赏这个话题已经多次讨论了,但我找不到一个iFrame的例子,经过大量阅读后没有成功。

我知道我应该使用.on()。继承人我所拥有的:

HTML:

<iframe src="https://...." scrolling="no" id="chatFrame"></iframe>

JS:

// wait for frame to load
$('#chatFrame').on('load', function(){

    $('#chatFrame').on('click', 'a', function(e){
        e.preventDefaults(e);
        alert("link clicked!" );
    });
});

我没有收到任何错误,但点击时没有触发警报,链接将我带到一个新窗口(如预期的默认行为)。

有人可以建议如何绑定到这些iFrame锚点吗?

1 个答案:

答案 0 :(得分:1)

您需要使用contents()进入iframe。 iframe拥有自己的窗口,因此$('iframe a')

等窗口中的元素无法访问

尝试

$('#chatFrame').on('load', function(){
    $(this).contents().find('body').on('click', 'a', function(e){
        e.preventDefault(e);
        alert("link clicked!" );
    });
});

这也假设iframe与网页位于同一个域中,或者您无法访问该网页