以编程方式调用focus()时不会触发onfocus

时间:2015-10-22 17:27:32

标签: javascript

我遇到的问题是,如果我点击一个链接或标签,就会触发onfocus,但如果我以编程方式调用链接上的focus(),则不会被调用。

这是我用来测试的一些代码。请注意,在超时运行后如何在两个链接上调用焦点,并且不会触发控制台,但如果您选中它们或单击它们,则会执行。

这是它的工作方式吗?当我以编程方式调用焦点或我遗漏某些内容时,我无法触发onfocus?

document.getElementsByTagName("a")[0].onfocus = function () {
    console.log("link1 onfocus triggered")
};
document.getElementsByTagName("a")[1].onfocus = function () {
    console.log("link2 onfocus triggered")
};
window.setTimeout(function () {
    console.log("timeout complete");
    document.getElementsByTagName("a")[0].focus();
    document.getElementsByTagName("a")[1].focus();
}, 3000);
<a href="#">link1</a>
<a href="#">link2</a>

1 个答案:

答案 0 :(得分:0)

您已创建自定义函数.onfocus,但您正在调用.focus()

window.setTimeout(function () {
    console.log("timeout complete");
    document.getElementsByTagName("a")[0].onfocus();
    document.getElementsByTagName("a")[1].onfocus();
}, 3000);