こんなスクリプトがあります。
function postBackByObject(e) {
var o = window.event.srcElement || e.target;
if (o.tagName == "INPUT" && o.type == "checkbox") {
__doPostBack("", "");
}
}
このスクリプトを onclick="postBackByObject();"
と共に使用しています。
が、Firefox 21ではこのようなエラーになります。
TypeError: window.event is undefined.
と表示されます。
それは'そうだからです。window.event
は古いバージョンの IE 用です。
典型的なやり方は
function postBackByObject(e) {
e = e || window.event;
var o = e.srcElement || e.target;
// ...
}
onclick="postBackByObject();"` の行でイベントをアタッチしています。
onclick="postBackByObject(this);"に
this` (イベントターゲット) を渡してみてください。
この変更を処理するために、関数を修正します。
function postBackByObject(e) {
if (e.tagName == "INPUT" && e.type == "checkbox") {
__doPostBack("", "");
}
}
より良い代替案は、addEventListener
を使用してイベントをアタッチすることでしょう。
もしあなたのマークアップが次のようなものであれば。
<div id="TvCategories" onclick="postBackByObject(this);" />
であれば
document.getElementById('TvCategories').addEventListener('click', postBackByObject);
この方法を使っても、postBackByObject
関数は変更されません。