1. ホーム
  2. javascript

[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。

2022-01-25 23:26:17

質問

を使用する場合 requestAnimationFrame で、ネイティブに対応したアニメーションを行うには、以下のようなコードがあります。

プレ var support = { animationFrame: window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame }; support.animationFrame(function() {}); //error support.animationFrame.call(window, function() {}); //right

を直接呼び出す。 support.animationFrame を与えると...

Uncaught TypeError: 不正な呼び出し

をChromeで表示します。なぜですか?

解決方法は?

あなたのコードでは、カスタムオブジェクトのプロパティにネイティブメソッドを代入しています。 このとき {コード それは、現在のオブジェクト(つまりサポート)のコンテキストで実行されます。ネイティブの requestAnimationFrame 関数が正しく動作するためには、以下のコンテキストで実行する必要があります。 {コード {コード .

ですから、ここでの正しい使い方は support.animationFrame(function () {}).

アラートも同様です。

window

また、別の方法として 関数.prototype.bind() これはES5標準の一部であり、すべてのモダンブラウザで利用可能です。

support.animationFrame.call(window, function() {});