2017-11-07 15 views
0

私はwindow.innerWidthwindow.innerHeightをブラウザに使用しています。これらの値をキャッシュして、アクセスするたびに再描画しないようにします。私は、同梱のためbrowserify使用していますので、私はこのモジュールを書いた:ブラウザのCommonjsモジュールがローカル変数を更新していません

var w = window.innerWidth; 
var h = window.innerHeight; 
var timeout = false; // holder for timeout id 
var delay = 250; // delay after event is "complete" to run callback 

// window.resize callback function 
function setDimensions() { 
    w = window.innerWidth; 
    h = window.innerHeight; 
} 

// window.resize event listener 
window.addEventListener('resize', function() { 
    clearTimeout(timeout); 
    timeout = setTimeout(setDimensions, delay); 
}); 

module.exports = { w, h } 

しかし、ビューポートのサイズが変更されたときの寸法が更新されていないインポートするとき。これをどうすれば解決できますか?

+0

私は、ローカルの 'w'と' h'を更新して、私のメインエントリーポイントでeventListenerを初期化することができるセッターをエクスポートすることを考えています。あるいはこれを解決するより良い方法がありますか? – vsjn3290ckjnaoij2jikndckjb

答えて

1

module.exportで変数をエクスポートすると、変数のコピーが参照ではなくなります。ローカル変数wとhを更新すると、エクスポートは変更されません。

+0

これは、ウィンドウの幅と高さをエクスポートするモジュールを書く方法がないことを意味します*と*は、サイズ変更時にこれらの値を更新できますか?最初の '要求'の時点の値のみがエクスポートされるためです。 – vsjn3290ckjnaoij2jikndckjb

+0

メソッドを呼び出すときに高さと幅を計算する2つのメソッドを持つクラスをエクスポートできます。 –

関連する問題