Хотя @ g00dy решение работает в большинстве случаев, есть некоторые Android версии, в которых это не достаточно. Я перепробовал все свойства, упомянутые в этом и другие сообщения, но ничего ...
В этих случаях единственный подход, который всегда работает использует свойство:
-webkit-user-modify: read-write-plaintext-only;
Плохая сторона является то, что она позволяет пользователь, чтобы отредактировать веб-просмотр, и он может отображать клавиатуру и даже позволить пользователю писать через веб-просмотр.
Короче говоря, после долгого дня поиска решений, единственный, который работал для меня на всех устройствах и в версиях, использовал указанное свойство, а затем обрабатывал щелчок по веб-просмотру.
Это некрасиво обходной путь:
В HTML я использовал DIV, чтобы обернуть код отверстие и добавил функцию на событие щелчка:
<html>
<head>...</head>
<body>
<div id="background">...content...</div>
</body>
<script type="text/javascript">
window.onload = function(){
var background = document.getElementById("background");
background.addEventListener("click",backgroundClick,false);
function backgroundClick(e) {
console.log("whatever");
window.location.href="ftp://"; //some protocolor (dummy url)
}
}
</script>
</html>
Тогда мы можем переопределить загрузку URL (или логарифм консоль) из Android следующим образом:
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
someView.requestFocus();
//do something else if needed
return true; //or false if you want the webview to process the url loading
}
});
Если изменить фокус с WebView на другой элемент не редактируется, клавиатура не отображается и эффект де .
Это нехорошее решение, но это единственное, что, наконец, сработало для меня.
Конечно, все это предполагает, что вам нужны другие события касания для работы (щепотка, прокрутка, щелчок ...).Если нет, переопределить событие onTouch над веб-просмотром и ничего не делать было бы достаточно.
Надеюсь, это поможет кому-то. С уважением.
Edit: Я заметил, что тот факт, что вы называете «backgroundClick()» Js функции отключает эффект изюминки даже удаляя свойство CSS, а не обработки события щелчка от Android. Так что, если вам не нужно что-то делать с событием вы можете игнорировать эту часть и просто добавить де EventListener в фоновом режиме и не делать ничего:
<html>
<head>...</head>
<body>
<div id="background">...content...</div>
</body>
<script type="text/javascript">
window.onload = function(){
var background = document.getElementById("background");
background.addEventListener("click",backgroundClick,false);
function backgroundClick(e) {
//nothing
}
}
</script>
</html>
спасибо за помощь :) – Inx
Always Wellcome ;-) – g00dy
Rather чем сделать цвет черным и установить альфа на 0. вы могли бы использовать '-webkit-tap-highlight-color: transparent;' [doc] (https://developer.mozilla.org/en-US/docs/Web/ CSS/-webkit-tap-highlight-color) – venkatvb