我尝试向iframe元素添加点击处理程序(iframe是页面的一部分,不是我添加的,并且是同一个域),但它似乎无法正常工作。如果我将事件更改为' mouseenter',它可以正常工作,但我尝试做的事情更适合用点击完成。根据我的理解,即使元素上已经存在点击方法,我仍然可以添加另一个,它们将按照它们附加的顺序运行。这是否意味着现有的点击处理程序之一以某种方式阻止我的运行,因为mouseenter工作正常,或者这是其他事情发生了吗?我使用的是jQuery 3.2.1。
$(document).ready(function() {
const INSTRUCTOR_PLACEHOLDER = 'Staff';
const IFRAME_ID = 'ptifrmtgtframe';
let iframe = document.getElementById(IFRAME_ID);
$(iframe).on('load', function () {
let instructorElementIds = 'span[id ^= "MTG_INSTR$"]';
//Issue here
$(iframe.contentDocument.body).on('click', instructorElementIds, function(event) {
console.log('i run');
});
});
});
iframe:https://pastebin.com/qwAmCFJx
完整的html页面(无法在浏览器中加载,因为有一些授权):https://pastebin.com/S4RhJuW8
编辑: 尝试在没有jquery的情况下执行此操作后,我注意到列表表中的任何位置都没有响应我的点击事件,但似乎iframe中的其他任何位置都会响应。表id是我发布到pastebin的html源代码中的ACE_SSR_CLSRSLT_WRK_GROUPBOX1,如果有帮助的话。这是代码:
iframe.contentDocument.addEventListener('click', function(e) {
console.log('test');
if(e.target && e.target.nodeName == 'span' && e.target.id.startsWith('MTG_INSTR$')) {
console.log('hello');
}
});