Кто-нибудь знает, как я могу удалить адресную строку из браузера Android, чтобы лучше просмотреть мое веб-приложение и сделать его более похожим на родное приложение?
Удаление адресной строки из браузера (для просмотра на Android)
Ответ 1
Вы можете сделать это со следующим кодом
if(navigator.userAgent.match(/Android/i)){
window.scrollTo(0,1);
}
Надеюсь, это поможет вам!
Ответ 2
Здесь находится решение NON-jQuery, которое мгновенно удаляет адресную строку без прокрутки. Кроме того, он работает, когда вы поворачиваете ориентацию браузера.
function hideAddressBar(){
if(document.documentElement.scrollHeight<window.outerHeight/window.devicePixelRatio)
document.documentElement.style.height=(window.outerHeight/window.devicePixelRatio)+'px';
setTimeout(window.scrollTo(1,1),0);
}
window.addEventListener("load",function(){hideAddressBar();});
window.addEventListener("orientationchange",function(){hideAddressBar();});
Он также должен работать с iPhone, но я не смог проверить это.
Ответ 3
Если вы загрузили jQuery, вы можете увидеть, превышает ли высота содержимого высоту видового экрана. Если нет, то вы можете сделать это той высотой (или немного меньше). Я запускал следующий код в режиме WVGA800 в эмуляторе Android, а затем запускал его на вкладке Samsung Galaxy Tab, и в обоих случаях он скрывал адресную строку.
$(document).ready(function() {
if (navigator.userAgent.match(/Android/i)) {
window.scrollTo(0,0); // reset in case prev not scrolled
var nPageH = $(document).height();
var nViewH = window.outerHeight;
if (nViewH > nPageH) {
nViewH -= 250;
$('BODY').css('height',nViewH + 'px');
}
window.scrollTo(0,1);
}
});
Ответ 4
Ссылаясь на ответ Volomike, я бы предложил заменить строку
nViewH -= 250;
с
nViewH = nViewH / window.devicePixelRatio;
Он работает точно так же, как я проверяю HTC Magic (PixelRatio = 1) и Samsung Galaxy Tab 7 "(PixelRatio = 1.5).
Ответ 5
Один ниже работает для меня каждый раз.
На этом сайте также есть несколько других предложений, но этот беззаботный, без проблем один из них доступен в github: gist и отвечает на ваш вопрос (вставленный здесь для удобства):
function hideAddressBar()
{
if(!window.location.hash)
{
if(document.height < window.outerHeight)
{
document.body.style.height = (window.outerHeight + 50) + 'px';
}
setTimeout( function(){ window.scrollTo(0, 1); }, 50 );
}
}
window.addEventListener("load", function(){ if(!window.pageYOffset){ hideAddressBar(); } } );
window.addEventListener("orientationchange", hideAddressBar );
Насколько я могу судить, комбинация добавочной высоты, добавленной к странице (которая вызвала проблемы для вас) и оператора scrollTo(), вызывают исчезновение адресной строки.
С того же сайта "простейшее" решение для скрытия адресной строки использует метод scrollTo():
window.addEventListener("load", function() { window.scrollTo(0, 1); });
Это скроет адресную строку, пока пользователь не прокрутится.
Этот сайт помещает один и тот же метод в функцию таймаута (оправдание не объясняется, но утверждает, что код не работает без него):
// When ready...
window.addEventListener("load",function() {
// Set a timeout...
setTimeout(function(){
// Hide the address bar!
window.scrollTo(0, 1);
}, 0);
});
Ответ 6
Проблема с большинством из них заключается в том, что пользователь все еще может прокручивать вверх и видеть адресную строку. Чтобы сделать постоянное решение, вам также нужно добавить это.
//WHENEVER the user scrolls
$(window).scroll(function(){
//if you reach the top
if ($(window).scrollTop() == 0)
//scroll back down
{window.scrollTo(1,1)}
})
Ответ 7
это работает на android (по крайней мере, на биржевом браузере):
<body onload="document.body.style.height=(2*window.innerHeight-window.outerHeight)+'px';"></body>
далее, если вы хотите отключить прокрутку, вы можете использовать
setInterval(function(){window.scrollTo(1,0)},50);
Ответ 8
Вот пример, который гарантирует, что тело имеет минимальную высоту высоты экрана устройства и также скрывает полосу прокрутки. Он использует событие DOMSubtreeModified, но делает проверку только каждые 400 мс, чтобы избежать потери производительности.
var page_size_check = null, q_body;
(q_body = $('#body')).bind('DOMSubtreeModified', function() {
if (page_size_check === null) {
return;
}
page_size_check = setTimeout(function() {
q_body.css('height', '');
if (q_body.height() < window.innerHeight) {
q_body.css('height', window.innerHeight + 'px');
}
if (!(window.pageYOffset > 1)) {
window.scrollTo(0, 1);
}
page_size_check = null;
}, 400);
});
Протестировано на Android и iPhone.
Ответ 9
Я надеюсь, что это также полезно
window.addEventListener("load", function()
{
if(!window.pageYOffset)
{
hideAddressBar();
}
window.addEventListener("orientationchange", hideAddressBar);
});
Ответ 10
Наконец, я попробую с этим. Это сработало для меня.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ebook);
//webview use to call own site
webview =(WebView)findViewById(R.id.webView1);
webview.setWebViewClient(new WebViewClient());
webview .getSettings().setJavaScriptEnabled(true);
webview .getSettings().setDomStorageEnabled(true);
webview.loadUrl("http://www.google.com");
}
и весь ваш взгляд main.xml(res/layout) должен выглядеть так:
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
не добавляйте макеты.
Ответ 11
Я обнаружил, что если вы добавите команду для разгрузки, он держит страницу, то есть страницу, которая перемещается! Надеюсь, он с тобой тоже работает!
window.addEventListener("load", function() { window.scrollTo(0, 1); });
window.addEventListener("unload", function() { window.scrollTo(0, 1); });
Используя 7-дюймовый планшет с Android, www.kupsoft.com зайдите на мой сайт и проверьте, как он ведет себя на странице, я использую эту команду на своем портале.