自动激活锚定选项卡

时间:2011-06-27 21:36:53

标签: javascript click

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

<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”结尾,警告正确地说“尝试单击制表符狗”,但随后我在下一行说明该元素没有click方法。

我正在测试Chrome 12。

2 个答案:

答案 0 :(得分:0)

您可以在上面的代码上添加以下代码,这将在不允许您直接单击()的浏览器中为实际的单击事件添加触发事件。请注意,此类功能通常包含在诸如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);
    }
}

答案 1 :(得分:0)

并非所有浏览器都支持html元素上的click()。你可以试试.onclick(),但你最好的选择是使用跨浏览器支持的点击事件触发器,如jQuery或其他js库

checkout this old post for more info