【问题标题】:Javascript to click on href linkJavascript点击href链接
【发布时间】:2012-01-18 22:42:58
【问题描述】:

我在搜索堆栈溢出后得到了这段代码,它应该可以工作,但由于某种原因我遇到了错误。我正在尝试编写模拟用户单击具有特定 ID 的特定 href 链接的 JS。

这需要在所有主流浏览器(chrome、FF、IE、Safari)中都可以使用

代码如下:

HTML:

<a id="clickhere" href="http://link.com">Need to simulate user clicking on this link</a>

JS:

fireOnclick();
function fireOnclick() {
var target=document.getElementById("clickhere");
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[0]);
    target[0].dispatchEvent( oEvent );
    }
else if(document.fireEvent) { // IE
    target[0].fireEvent("onclick");
    }    
}

感谢任何帮助。谢谢

【问题讨论】:

  • 添加错误信息是什么?
  • 你不能使用jquery有什么原因吗? $("#clickhere").click() 处理它并为您覆盖跨浏览器的情况
  • @JimDeville 你是对的,理想的情况是在这里使用一个框架来处理跨浏览器问题。
  • @JimDeville:你确定吗? Jquery 的点击只调用在 jQuery jsfiddle.net/mendesjuan/tYhrD 中设置的处理程序,它不模拟点击。该链接是一个完美的例子,因为您没有使用 jQuery 设置链接的行为
  • @JuanMendes:如果您向链接添加 onclick 处理程序,它会触发。只是导航没有触发(它仍然显示你在说什么)。奇怪的是 JQuery 不会导致导航:(

标签: javascript internet-explorer firefox google-chrome safari


【解决方案1】:

您需要从 target[0] 引用中删除 [0]。 getElementById 返回一个元素,而不是元素数组。我在 Chrome 中测试过,效果很好。

http://jsfiddle.net/mendesjuan/vCVbA/1/

【讨论】:

  • 我添加了 jsfiddle。他们的框架将X-Frame-Options 设置为 SAMEORIGIN,所以我将链接指向 jsfiddle 的主页。
  • 谢谢!旧代码是 getelementsbyclass,我忘了更改数组
猜你喜欢
  • 2019-07-10
  • 2019-10-21
  • 1970-01-01
  • 2014-01-22
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 2012-10-06
相关资源
最近更新 更多