ブラウザがサポートしているかどうかを検出するための信頼できる方法はありますposition fixed
か?
私はいくつかの解決策を見つけましたが、それらのどれもすべてのブラウザでうまく機能しないようです。
ブラウザがサポートしているかどうかを検出するための信頼できる方法はありますposition fixed
か?
私はいくつかの解決策を見つけましたが、それらのどれもすべてのブラウザでうまく機能しないようです。
jQuery Mobileを使用してモバイルアプリケーションを開発しているときに、同じ問題が発生しました。ヘッダーの位置は固定されている必要があり(ブラウザーでサポートされている場合)、解決策はposition: fixed
、cssのデフォルトでヘッダーを設定し、次の方法でサポートされているプロパティを確認することでした。
function isPositionFixedSupported() {
return $( '[data-role="header"]' ).css( 'position' ) === 'fixed';
}
戻り値はstatic
、ブラウザでサポートされていない場合です。
このコードは完全に正常に機能します。IE6を搭載したWindowsMEボックスでテストしたところ、IE6はをサポートしていないため、「null」が返されますposition:fixed;
。
ちなみに、これはもともと私のコードではありません。すべてのクレジットは、 ブラウザの機能をテストするための多くの機能を備えたKangaxのGithubに割り当てられます。
function () {
var container = document.body;
if (document.createElement &&
container && container.appendChild && container.removeChild) {
var el = document.createElement("div");
if (!el.getBoundingClientRect) {
return null;
}
el.innerHTML = "x";
el.style.cssText = "position:fixed;top:100px;";
container.appendChild(el);
var originalHeight = container.style.height, originalScrollTop = container.scrollTop;
container.style.height = "3000px";
container.scrollTop = 500;
var elementTop = el.getBoundingClientRect().top;
container.style.height = originalHeight;
var isSupported = elementTop === 100;
container.removeChild(el);
container.scrollTop = originalScrollTop;
return isSupported;
}
return null;
}
実行された場合は機能し、機能しなかった場合はnullを取得します。
var supportFixed = (function () {
var elem = document.createElement('div');
elem.style.cssText = 'position:fixed';
if (elem.style.position.match('fixed')) return true;
return false;
}());
このようなものはモバイルブラウザで機能しますか?
function isFixedPositionSupported() {
var e = document.createElement('div')
try {
e.style.position = 'fixed'
return e.style.position == 'fixed'
} catch (exception) {
return false
}
}
Ohgodwhyのコードは正しいですが、iOSの場合、ユーザーエージェントをチェックして、それがiOSSafariであるかどうかを確認できます。次に、サポートされていることを返します。ユーザーエージェントの文字列は
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7
これをコーディングする方法はわかりませんが、iOSを検出するためにこれを行う必要があると確信しています。