IE9で次のエラーが発生します。
「オブジェクトはこのアクションをサポートしていません」。
これについてはさまざまな質問がありますが、私のものは特に次のコード用です。
var myEvent = new CustomEvent("additem");
私の理解では、CustomEventはDOM操作コマンドとしてIE9でサポートされています。これは、例外なくChromeで正常に機能します。
誰かがこの問題を抱えていて、それを解決する方法を知っていますか?ありがとう。
AfaikカスタムイベントはIEではサポートされておらず、通常のブラウザでのみサポートされています。 Jqueryのトリガーのようなブラウザーに依存しない実装を提供するjavascriptライブラリを使用することをお勧めします: http://api.jquery.com/trigger/
Javascript関数を使用して、ブラウザーがIE11以下であるかどうかを検出し、次のポリフィルを適用できます。
(function () {
function CustomEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
};
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
})();
上記のポリフィルはMDNから取得されます: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
ネイティブ(および機能)CustomEventメソッドを置き換えないこのポリフィルを試してください。
(function () {
try {
new CustomEvent('test');
return;
} catch(e) {
// ignore this error and continue below
}
function CustomEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
};
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
})();
次のポリフィルは、ネイティブのCustomEvent()を置き換えません。
部分的なソース: MDN CustomEvent() :
(function () {
if (typeof CustomEvent === 'function') { return; }
function customEvent(event, params) {
params = params || {bubbles: false, cancelable: false, detail: undefined};
var evt = document.createEvent('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
}
customEvent.prototype = window.Event.prototype;
window.CustomEvent = customEvent;
})();