-1

我有下面的代码

<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;");

这段代码会起作用吗?如果没有,怎么办?

4

1 回答 1

2

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

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

如果浏览器正确绑定该属性,这基本上就是设置onclick属性时发生的情况:因此,从功能的角度来看,它是完全相同的。

于 2013-10-19T07:09:35.853 回答