2017-07-12 10 views
0

私はずっと試してみましたが、ページ上を上下にスワイプすると、window.onresizeがまだ発火します。スクロール時にwindow.onresizeイベントを停止する方法は?私は一度だけ発射する必要がありますか?

まず、私は基本的なコマンドライン試してください:

window.onresize = function (event) { 
    setTimeout(Orientation,500); 
} 

function Orientation() { 
if (window.innerHeight > window.innerWidth) { 
    alert("Portrait"); 
    } 
else { 
    alert("Landscape"); 
    } 
} 

警告ショーアップを、私は[OK]をクリックします。しかし、私は、なかれのようなもの...

私はjQueryのデビッド・ウォルシュを尽くす

再びページを下に、警告表示をアップしたりスワイプするとき:結果は同じである

function debounce(func, wait, immediate) { 
    var timeout; 
    return function() { 
     var context = this, args = arguments; 
     var later = function() { 
      timeout = null; 
      if (!immediate) func.apply(context, args); 
     }; 
     var callNow = immediate && !timeout; 
     clearTimeout(timeout); 
     timeout = setTimeout(later, wait); 
     if (callNow) func.apply(context, args); 
    }; 
}; 

var myEfficientFn = debounce(function() { 
    if (window.innerHeight > window.innerWidth) { 
    alert("Portrait"); 
    } 
else { 
    alert("Landscape"); 
    } 
}, 250); 

window.addEventListener('resize', myEfficientFn); 

あなたは携帯電話やタブレットで、ここで試すことができます:http://hangaumy.com/test.html

は、このイベントのために他の方法はありますか?どうもありがとう !

答えて

0

関数に条件を入れて、関数が必要なときに起動するようにします。

window.onresize = doSomething; 
 
var count=0 
 
function doSomething(x) { 
 
if(count<1){ 
 
    alert('Go' + x); 
 
    } 
 
    count+=1; 
 
}

+0

WOW、AMAZINGを、ITは完了です!あなたの美しい助けをありがとう!しかし、Window.resizeイベントは今停止します.Window.resizeを実行すると一度実行しますか? –

+0

私が作っていることを理解しているとは思わない。イベントではなく、発砲からあなたの機能を停止します。タイムアウトを取り出して関数に入れます。 "if else"を2つの別々の条件にしてはいけません。 "それ以外の場合" – Rick

0

私は、この場合には、サイズ変更イベントを使用する方法を見つけることができませんが、私は別の解決策が見つかりました:

var orien = ''; 
setInterval(function() { 
    if (window.innerHeight >= window.innerWidth && orien != 'Portrait') { 
    alert('Portrait'); 
    orien = 'Portrait'; 
    return; 
    } 
    if (window.innerHeight < window.innerWidth && orien != 'Landscape') { 
    alert('Landscape'); 
    orien = 'Landscape'; 
    } 
}, 500); 
+0

window.resizeイベントには何の効果もありませんか? –

+0

申し訳ありませんが、私の間違いは、この場合にイベントのサイズ変更を使用する方法を見つけることができませんが、私は別の解決策を見つけました。私は答えにコードを追加します。それを見てみましょう –

関連する問題