0

これを行うとうまくいきます:

var requestAnimationFrame = 
    window.requestAnimationFrame ||
    window.webkitRequestAnimationFrame ||
    window.mozRequestAnimationFrame;

function _test() {
    console.log('hello from test');
}

requestAnimationFrame(_test);

ただし、これを別のファイルに移動し、CommonJS/webpack を使用してエクスポートすると、次のようになります。

Uncaught TypeError: Illegal invocation

(そのようです:)

module.exports.requestAnimationFrame = 
    window.requestAnimationFrame ||
    window.webkitRequestAnimationFrame ||
    window.mozRequestAnimationFrame;

...

var poly = require('../utils/polyfills');
poly.requestAnimationFrame(_test);

それはおそらく非常に明白ですが、私の心の中では、なぜそれがうまくいかないのかわかりません:/

4

1 に答える 1

0

私はここで答えを見つけました: JavaScriptで特定の関数呼び出しが「不正な呼び出し」と呼ばれるのはなぜですか?

一部のネイティブ関数はコンテキストに依存しているようです。これを修正するために、ウィンドウにバインドします。

module.exports.requestAnimationFrame = 
    (window.requestAnimationFrame ||
    window.webkitRequestAnimationFrame ||
    window.mozRequestAnimationFrame).bind(window);
于 2015-02-14T16:30:09.780 に答える