javascript - 自动激活锚定选项卡

标签 javascript click

我正在尝试一些 JavaScript 代码,但遇到了一个元素告诉我无法单击的问题。目标是根据 URL 中的 anchor 激活选项卡。这是简短的版本:

<tab onClick="showTab('Dogs')">Dogs</tab>
<tab onClick="showTab('Cats')">Cats</tab>
<script type="text/javascript">
var chunks = document.URL.split('#')
if(chunks.length > 1) {
  var anchored_tab = chunks.pop().toLowerCase()
  var tabs = document.getElementsByTagName('tab')
  for(i in tabs) {
    if(tabs[i].innerHTML.toLowerCase() == anchored_tab) {
      alert("trying to click tab "+tabs[i].innerHTML)
      tabs[i].click()  // TypeError: Object#<HTMLElement> has no method 'click'
    }
  }
}
</script>

假设 URL 以“#dogs”结尾,则警报正确显示“尝试单击选项卡 Dogs”,但随后我在下一行收到异常,表示该元素没有单击 方法。

我正在 Chrome 12 上进行测试。

最佳答案

您可以在现有代码之上添加以下代码,这将在不允许您直接 click() 的浏览器中向实际单击事件添加一个触发事件。请注意,这种类型的功能通常包含在 jquery 或原型(prototype)等库中。

if(typeof HTMLElement!='undefined'&&!HTMLElement.prototype.click) {
    HTMLElement.prototype.click=function() {
        var evt = this.ownerDocument.createEvent('MouseEvents');
        evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
        this.dispatchEvent(evt);
    }
}

关于javascript - 自动激活锚定选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499228/

相关文章:

javascript - 你能停止 window.onload 函数吗?

javascript - jQuery - keyup 事件作为函数

javascript - 我将如何使用 javascript 将包含两个城市(及其状态)的字符串分隔到它们自己的变量中?

javascript - 将 React 组件从函数重构为 ES6 类

javascript - jquery 关闭点击?

javascript - 点击 radio 没用。为什么?

javascript - jQuery .click() 事件仅在另一个 .click() 事件内触发一次

javascript - Angularjs ng-repeat md-focus 最后一个元素?

javascript - 缺少 : after property id (jquery)

javascript - 在 <div> 标签中显示一定数量的行