我想将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锚点吗?
答案 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与网页位于同一个域中,或者您无法访问该网页