2010-10-27 67 views
0

有沒有一種方法以編程方式在JavaScript調用標籤的本土單擊事件? .trigger('click')或.click()函數將不起作用,因爲它們觸發鏈接的onClick事件,而不是URL後面的事件。我需要以編程方式點擊一個隱藏的鏈接,並在同一瀏覽器中按照該鏈接指向一個新的選項卡。 Window.open不會工作,因爲這會導致一個彈出窗口,我試圖避免這種情況。我需要這個,因爲我在服務器端動態生成一個URL並通過JSON發回響應。然後,我使用生成的URL填充隱藏鏈接的HREF屬性。如果我能得到關於如何完成的答案,我將不勝感激。HTML <a>本地Click事件

回答

1

從我所知道的,它是不可能通過javascript調用鏈接的本地點擊功能。您可以使用.click()引用onclick,但本機點擊仍然會在調用之前運行。因此,如果您想在點擊鏈接之前修改鏈接,則必須點擊鏈接兩次,然後才能將鏈接發送給您。

2

如果您正在使用JSON響應填充HREF,爲什麼不將它存儲在變量中,而是當您想要轉到它時,window.location = yourVariable;

+0

了window.location不會爲我工作,因爲我不想打開當前選項卡的鏈接,並替換當前頁面。我需要它去一個新的標籤。 – usherjer 2010-10-27 19:20:30

+0

同意,我沒有看到將URL分配給隱藏鏈接的地步,因此您可以單擊它。提供更直接的方式來導航到新的位置。 – meagar 2010-10-27 19:20:48

+2

@usherjer如果你想讓它在新選項卡中打開,使用'window.open'。不管是在選項卡還是在新窗口中打開,都完全依賴於瀏覽器,因爲並非所有瀏覽器都支持選項卡。沒有辦法專門指示瀏覽器在新選項卡中打開鏈接。 – meagar 2010-10-27 19:21:33

2

除非你想這對IE瀏覽器而已,我沒有給你一個答案,但我可以告訴你的是什麼問題。問題是target=_blank。嘗試下面的代碼作爲測試 - 注意它會帶你到Google.com - 然後嘗試編寫「_blank」作爲目標。這似乎是瀏覽器不允許的唯一事情。對你的問題的部分回答是fireEvent()與IE和dispatchEvent()一起工作的一切。如果其他人可以改進此代碼,我希望能有更好的答案。

<html> 
<head> 
<script type="text/javascript"> 
window.onload = function fireElement() { 
var target=document.getElementById('foobar'); 
if(document.dispatchEvent) { // W3C 
var oEvent = document.createEvent("MouseEvents"); 
oEvent.initMouseEvent("click", true, true, window, 1, 1, 1, 1, 1, false, false, false, false, 0, target); 
target.dispatchEvent(oEvent); 
} 
else if(document.fireEvent) { // IE 
target.fireEvent("onclick"); 
} 
} 
</script> 

</head> 
<body> 
<div> 
<a id="foobar" target="" href="http://www.google.com"></a> 
</div> 
</body> 
</html>