ブラウザのサイズが変更された割合を計算しようとしていますが、サイズ変更が開始される前のウィンドウのサイズと、サイズ変更が終了した後のサイズをキャプチャできないようです。
$(function () {
var originalHeight = $(window).height();
$(window).resize(function (e) {
var newHeight = $(window).height();
var percentageChange = newHeight / originalHeight;
$('body').html('old: ' + originalHeight + ' | new: ' + newHeight);
originalHeight = newHeight;
});
});
2つの数値(originalHeightとnewHeight)は、何らかの理由で常に一致します。またはなどの2つの追加イベントをシミュレートするためにできることはありますbeginResize
かendResize
?私がそれを行うことができれば、私はこれを行うことができます:
$(function () {
var originalHeight;
$(window).beginResize(function () {
originalHeight = $(window).height();
});
$(window).endResize(function () {
var newHeight = $(window).height();
var percentageChange = newHeight / originalHeight;
alert(percentageChange);
});
何か案は?
アップデート:
空白の環境でこれをローカルに複製することはできましたが、jsfiddleでは複製できませんでした。jsfiddleのiframe環境が干渉していると結論付けることしかできません。
次のページを実行すると:
<!DOCTYPE html>
<html>
<head>
<title>Isolate</title>
<script type="text/javascript" src="~/Scripts/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function () {
var originalHeight = $(window).height();
$(window).resize(function (e) {
var newHeight = $(window).height();
var percentageChange = newHeight / originalHeight;
$('body').append('old: ' + originalHeight + ' | new: ' + newHeight + ' | percentage: ' + percentageChange + '<br />');
originalHeight = newHeight;
});
});
</script>
</head>
<body>
</body>
</html>
次の結果が得られます。
old: 417 | new: 418 | percentage: 1.0023980815347722
old: 418 | new: 418 | percentage: 1
old: 418 | new: 419 | percentage: 1.0023923444976077
old: 419 | new: 419 | percentage: 1
old: 419 | new: 420 | percentage: 1.0023866348448687
old: 420 | new: 420 | percentage: 1
old: 420 | new: 422 | percentage: 1.0047619047619047
old: 422 | new: 422 | percentage: 1
old: 422 | new: 423 | percentage: 1.0023696682464456
old: 423 | new: 423 | percentage: 1
サイズ変更イベントは、サイズ変更ごとに2回実行されているようです。最初はoriginalとnewの違いを検出しますが、2回目は、最初の実行でoriginalHeightがnewHeightに更新されるため、値は同じです。
このフィドルで、このダブルイベント実行の問題が発生していないことがわかります。各エントリには、新旧の異なる値が表示されます。