Ответ 1
Я написал этот тест для iOS: http://mnobeta.no/2011/09/test-position-fixed-for-iphone/
Это немного грязно, но, похоже, работает. Android по-прежнему является проблемой из-за его "поддельного" position:fixed
.
Modernizr велик, но пример теста для position: fixed
довольно неполный:
true
, в то время как он не поддерживает position: fixed
false
, в то время как поддерживает position: fixed
Я нашел еще один тест, основанный на тесте Modernizr, но с добавлением iOS: https://gist.github.com/855078/109ded4b4dab65048a1e7b4f4bd94c93cebb26b8.
Это не действительно надежное будущее, так как iOS 5 поддерживает position: fixed
.
Можете ли вы, ребята, помочь мне найти способ проверить позицию, зафиксированную в iOS без браунинга?
// Test for position:fixed support
Modernizr.addTest('positionfixed', function () {
var test = document.createElement('div'),
control = test.cloneNode(false),
fake = false,
root = document.body || (function () {
fake = true;
return document.documentElement.appendChild(document.createElement('body'));
}());
var oldCssText = root.style.cssText;
root.style.cssText = 'padding:0;margin:0';
test.style.cssText = 'position:fixed;top:42px';
root.appendChild(test);
root.appendChild(control);
var ret = test.offsetTop !== control.offsetTop;
root.removeChild(test);
root.removeChild(control);
root.style.cssText = oldCssText;
if (fake) {
document.documentElement.removeChild(root);
}
return ret;
});
Я написал этот тест для iOS: http://mnobeta.no/2011/09/test-position-fixed-for-iphone/
Это немного грязно, но, похоже, работает. Android по-прежнему является проблемой из-за его "поддельного" position:fixed
.
Я обнаружил, что вам нужно вставить некоторые хаки, чтобы получить функциональное позиционное тестирование. Например, я вставил взломанный в мой тест, который возвращает true для iOS deviced running v.5 или выше:
/*iPhone/iPad Hack*/
if(navigator.userAgent.match(/iPad|iPhone/i) !== null){
/*Check if device runs iOS 5 or higher*/
isSupported = navigator.userAgent.match(/[5-9]_[0-9]/) !== null;
}
Я не уверен, как "чистый" этот код, но он делает трюк для меня.