数年前、クライアントにjavascriptのページズーム検出方法をリクエストしてもらいました。
私の場合、彼はそれがFacebookアプリで動作することを望んでいました。iframeキャンバス/ビューポートを介して。
最大関数と最小関数を使用しました
function getDocHeight() {
var D = document;
return Math.max(
Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
Math.max(D.body.clientHeight, D.documentElement.clientHeight)
);
}
function getDocWidth() {
var D = document;
return Math.max(
Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
Math.max(D.body.clientWidth, D.documentElement.clientWidth)
);
}
function getMinHeight(h) {
return Math.min(viewport.currentHeight, getDocHeight(), h);
}
getMinWidthも同様でしたが、ブラウザーベースの調整を適用する必要がありました。
固定位置divのプロパティを格納するビューポートと呼ばれるオブジェクトを作成しました。具体的には、currentHeightとcurrentWidthはdiv要素のoffsetHeightとoffsetWidthでした。
結局、window.intervalTimerを初期化して、ビューポートオブジェクト内に格納されている値と比較して、そのdivの状態のチェックを実行しました。