javascript JS在Firefox中失败,但在IE中正常

b5lpy0ml  于 2023-03-28  发布在  Java
关注(0)|答案(2)|浏览(114)

我有下面的方法,这是在IE中工作正常,但我得到以下错误:
TypeError:hdnButton .click不是函数
当我在Firefox中使用它时。

function PopupTest() {
    var hdnButton = document.getElementById('div_btn').firstChild;
    hdnButton.click();
}

谁能建议如何解决这个问题?我无法找到任何解决方案。

nbysray5

nbysray51#

我的 * 猜测 *(因为你没有显示html)是你有一些白色(也许是一个换行符),IE忽略了,但FF作为文本节点返回。如果是这样,你应该能够跳过它,如下所示:

function PopupTest() {
    var hdnButton = document.getElementById('div_btn').firstChild;
    while (hdnButton.nodeType === 3)
        hdnButton = hdnButton.nextSibling;
    hdnButton.click();
}

...它通过使用.nodeType属性来测试.firstChild是否是文本节点(3表示文本节点;更多信息请参见MDN)。如果是,它将获取下一个兄弟并测试其.nodeType,依此类推,直到找到一个不是文本节点的元素。(当然,这假设会有一个。)
或者,如果你知道(非文本节点)第一个子节点应该是什么标签,你可以在此基础上选择它,例如,如果它实际上是一个<button>元素:

hdnButton = document.getElementById('div_btn').getElementsByTagName("button")[0];
hdnButton.click();

或者如果你不需要支持IE〈=7:

document.querySelector("#div_btn > :first-child").click();
kninwzqo

kninwzqo2#

检查document.getElementById('div_btn').firstChild;
如果它存在,可能还有另一个错误,例如空格,或者您在加载DOM之前调用了PopupTest()。
试试看:

<body onload="PopupTest()">

相关问题