2010-10-27 64 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>