我想将 onClick 事件处理程序绑定(bind)到 iFrame 中的每个 anchor 。将 iframe 视为 IM/聊天客户端,因此在 iframe 加载时不存在 anchor 链接。我无法控制 iFrame 源,因此 anchor 不能设置任何属性。
感谢这个主题已讨论过多次,但我找不到 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!" );
});
});
我没有收到任何错误,但点击时不会触发警报,并且链接会将我带到一个新窗口(如预期的默认行为)。
任何人都可以建议如何绑定(bind)到这些 iFrame anchor 吗?
最佳答案
您需要使用 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 与页面位于同一域中,否则您将无法访问它
关于javascript - jQuery - 从 iframe 动态创建的元素上的事件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215188/