chrome / firefox浏览器范围处理的差异

时间:2013-03-01 22:48:51

标签: javascript google-chrome dom cross-browser scope

这会在Chrome中提醒x,但不会在firefox(Chrome 25.0 / FF 11.0)上提醒:

var x="hi.", b;
(b = document.createElement("button")).innerHTML = "click me";
b.setAttribute("onclick", "alert(x)"); // Doesn't work on FF, but works on Chrome
document.body.appendChild(b);

当我使用DOM(b.onclick,如下面的代码)时,它既可以使用,也可以在字符串形式中使用属性时返回“x not defined”错误,就像上面的代码一样。

var x="hi.", b;
(b = document.createElement("button")).innerHTML = "click me";
b.onclick = function(){alert(x)}; // Works on FF/Chrome
document.body.appendChild(b);

导致此问题的两个浏览器之间有什么区别?

1 个答案:

答案 0 :(得分:1)

这应该适用于FF和Chrome,但不适用于IE,你需要实际传递变量吗?

var x="hi.", b;
(b = document.createElement("button")).innerHTML = "click me";
b.setAttribute("onclick", "alert('"+x+"')");
document.body.appendChild(b);

在IE的旧版本中,据我所知,你无法使用setAttribute设置内联javascript。

FIDDLE(在FF 19和最新的Chrome中测试过)