2011-06-27 82 views
1

我正在試驗一些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

回答

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); 
    } 
} 
0

並非所有瀏覽器都支持html元素上的click()。你可以嘗試.onclick(),但你最好的選擇是使用一個跨瀏覽器支持的單擊事件觸發像jQuery的或其它JS庫

checkout this old post for more info