在JavaScript中使用setAttribute时如何使用onclick?

时间:2013-10-19 06:58:20

标签: javascript

我有下面的代码

<a href="" onclick="window.open((window.pageViewer &amp;&amp; pageViewer.link || function(link){return link;})(this.href + (this.href.indexOf('?')>=0 ? '&amp;' : '?') + 'url=' + escape(document.location.href)), 'Chat000', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=640,height=480');return false;">

我需要用JavaScript / DOM元素实现相同的功能。我不允许直接写html。所以我可能要使用document.createElement

我可以使用如下吗?

var a = document.createElement("a");
a.setAttribute('onclick',"window.open((window.pageViewer &amp;&amp; pageViewer.link || function(link){return link;})(this.href + (this.href.indexOf('?')>=0 ? '&amp;' : '?') + 'url=' + escape(document.location.href)), 'Chat000', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=640,height=480');return false;");

此代码有效吗?如果没有,该怎么做?

1 个答案:

答案 0 :(得分:2)

您的代码适用于某些浏览器,但不适用于所有浏览器。例如,某些版本的IE没有正确地将“属性”与“属性”绑定在一起。因此,您希望支持的浏览器取决于setAttribute实际上不会设置点击侦听器。这就是为什么最好的事情,由javascript设置,具有更广泛的兼容性:

var a = document.createElement("a");
a.onclick = function(event) {
    window.open(/*.. your params  **/);
    return false;
}

这基本上是当您设置onclick属性时,如果浏览器正确绑定属性,那么:所以,从功能的角度来看,它完全相同。