2011-07-13 69 views
2

下面的代码在IE7中可以正常工作,但在Safari(5.0.5)中不能正常工作。如果可能的话,我想避免使用jQuery。目标是在iPad上使用此功能,但现在正在使用桌面Safari进行测试。请让我知道,如果你有任何想法让它在IE和Safari上都可以使用。
onclick()不在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> 

更新:讨论是否要与 “onmouseup” 或类似下面[东西去感谢安德烈!我不能添加注释]

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

看到这个问题http://stackoverflow.com/questions/5477305/plugin-to-make-the-method-click-cross-browser –

回答

4

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

现在,如果你想模拟点击,this answer会给你你需要做的一切。

+0

我正在使用此 ...并显示日历图标。点击()将无法在Safari上运行? – Poonam

6

在Safari中,该方法click()(其模拟鼠标点击)不能被施加到<img>。但是,它可以应用于<input type="image">。你能用吗?

+0

谢谢,你的回答间接帮助了我,我可以从你的回答中了解到,遗产浏览器不支持click()事件,只是我用onclick()取代了它,现在它在传统浏览器和现代浏览器中工作,再次感谢 – user1844933

+0

我使用这个'''。 ..和日历图标显示。 'click()'在safari中无法工作吗? – Poonam