これはクロムで 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 が定義されていません」というエラーが返されます。
var x="hi.", b;
(b = document.createElement("button")).innerHTML = "click me";
b.onclick = function(){alert(x)}; // Works on FF/Chrome
document.body.appendChild(b);
これを引き起こす 2 つのブラウザの違いは何ですか?