事件没有触发位于iframe表中的按钮(没有jQuery)
Event is not firing on button located in a table in an iframe (no jQuery)
我必须在单击HTML表单中的添加按钮时显示一个旋转器,等待Ajax加载选择框中的内容。选择框位于iframe中。我已经建立了一个我试图在jsfiddle中实现的简化复制。有两张表,一张用于研究项目,另一张用于主要研究小组。这些表包含一个add图标。我想在点击研究项目的添加按钮时触发一个console.log。
我必须在选择器中使用父容器的名称,因为在用户界面中没有其他非文本标识符。我只想使用纯JavaScript,但如果jQuery或其他框架提供了解决方案,那么我也会这么做。
var formFrame = document.getElementById('form_iframe');
formFrame.src = "/catorarn/tabLe/24/show/";
var formFrameDoc = formFrame.contentDocument;
formFrame.onload = function() {
//click event on add button
var btn = getElementByXpath("//i[contains(@class,'fa fa-plus-circle') and ../../td/span[text()='Research project']]", formFrame);
console.log('showSpinner === btn is ' + btn);
addEvent(btn, 'click', function(e){
console.log('inside event listener');
e.stopPropagation();
});
};
function getElementByXpath(path, iframe) {
console.log('iframe is ' + iframe );
var doc = iframe.contentDocument;
return doc.evaluate(path, doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
function addEvent(elem, evnt, funct){
if (elem.attachEvent){
console.log('addEvent === attachEvent');
return elem.attachEvent('on' + evnt, funct);
} else {
console.log('addEvent === addEventListener == elem is ' + elem );
return elem.addEventListener(evnt, funct, false);
}
}
我在这里创建了一个小提琴来重现这个问题
当我在jsfiddle中单击Run时,事件根本没有在按钮上注册。为什么事件没有注册?
var formFrame = document.getElementById('form_iframe');
formFrame.src = "/catorarn/tabLe/29/show/";
formFrame.onload = function() {
var formFrameDoc = formFrame.contentDocument;
//click event on add button
var tables = formFrameDoc.getElementsByClassName('iw-formspub-container');
var children ;
for (var i = 0 ; i < tables.length; i++ ){
children = tables[i].getElementsByTagName('*');
for (var j = 0; j < children.length; j++ ){
if( children[j].textContent === 'Research project' ){
var btn = formFrameDoc.querySelector(".fa.fa-plus-circle");
btn.addEventListener('click', function(){ console.log('finally'); });
}
}
}
};
我要使用的xpath选择器会很难看很复杂,比如
//i[contains(@class,'fa-plus-circle') and ../../../../../../../../../../../td/table/tbody/tr/td/span[contains(text(),'Research project')]]
相关文章:
- Facebook登录按钮没有'不能在Firefox上工作
- 我的HTML按钮没有在Javascript中运行
- JS CSS切换按钮没有'不要向上移动
- 类似facebook的按钮没有显示在fancybox标题中
- 我的单选按钮没有从foreach循环中获得值,表单验证返回'必填字段'即使已检查
- 点击一次的按钮没有启动
- Javascript Groovy按钮没有'我不在IE工作
- scrollTop按钮没有't设置动画
- 按钮没有被取消高亮显示
- 引导模式按钮没有响应
- jQuery datatables tabletools 按钮没有显示
- HTML 按钮没有按预期调用 javascript 函数
- 为什么按钮没有改变
- Facebook分享按钮没有显示
- HTML表单对点击“输入”按钮没有响应
- 为什么我的按钮没有将数据发布到我的 mysql 数据库
- 引导程序中的引导单选按钮没有样式不可更改
- 为什么Facebook发送按钮没有显示
- jQuery日期选择器上一个和下一个按钮没有显示,如何指向css中的主题文件夹图像
- 浏览器后退按钮没有'当内容加载到iframe中时不起作用