onclick()不在safari中工作

时间:2011-07-13 16:30:55

标签: javascript html safari onclick

以下代码适用于IE7,但不适用于Safari(5.0.5)。如果可能的话,我想避免使用jQuery。目标是使此功能在iPad上运行,但现在正在使用桌面游戏进行测试。如果您有任何关于在IE和Safari上工作的想法,请告诉我         

<div id="test" ></div>
<script>
  function attachCallback(node) {
    node.onclick = function() {   
      alert("coming here");
    } ;
  }  
  var retrybutton = document.createElement("img");
  retrybutton.src = "test.png";
  retrybutton.alt = "retry";

  retrybutton.setAttribute("id","retrybutton");
  attachCallback( retrybutton ) ;

  var a = document.getElementById("test");
  a.appendChild(retrybutton);
  // testing without using retrybutton
  var test = document.getElementById("retrybutton");
  test.click();
</script>
</body></html>

更新:辩论是否与#34; onmouseup&#34;或类似下面[谢谢Andres !!我无法添加评论]

 if (Prototype.Browser.IE) {
   document.getElementById("retrybutton").click(); 
 } else { // from question link in comment
   var event = document.createEvent("HTMLEvents");
   event.initEvent("click", true, true);
   document.getElementById('retrybutton').dispatchEvent(event);
 }

2 个答案:

答案 0 :(得分:6)

在Safari中,click()方法(模拟鼠标单击)无法应用于<img>。但是,它可以应用于<input type="image">。你能用它吗?

答案 1 :(得分:4)

正如gilly3所说,您遇到的问题是您无法在click()上致电<img>。这并不意味着onclick处理程序不起作用。如果你用鼠标点击图像,处理程序仍然会触发。

现在,如果您想模拟点击,this answer将为您提供执行此操作所需的一切。