Подтвердить что ты не робот

Отключение выбора текста в PhoneGap

Можно ли отключить выбор текста, чтобы сделать приложение PhoneGap более похожим на обычное родное приложение?

Что-то вроде этого:

document.onselectstart = function() {return false;}

или

* { 
user-select: none;
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
}

Или многие другие вещи не работают.

4b9b3361

Ответ 1

Я посмотрел на все это для помощи. Это, наконец, помогло мне.

public class MainActivity extends DroidGap {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        super.loadUrl("file:///android_asset/www/index.html");

        super.appView.setOnLongClickListener(new View.OnLongClickListener() {

            public boolean onLongClick(View v) {
                return true;
            }
        });
    }
}

setOnClickListener - это то, что делает магия. Убедитесь, что вы поставили это ПОСЛЕ вашего вызова на super.loadUrl.

Конечно, это отключит выбор текста для всего вашего приложения, но я в порядке с этим, и пока у меня нет другого пути.

Я не уверен в том, что это все еще имеет значение, но я использую событие JqueryMobile "taphold", и он все еще отлично работает. Я считаю, что это работает, обращаясь к длинному клику на appView (который размещает ваше приложение HTML) и не позволяет ему пузыриться.

Ответ 2

Включение html, а не *, работает для меня:

html {
    -webkit-user-select: none;
}

Ответ 3

Кроме того, что упоминалось в ThinkingStiff, я также использую следующее, чтобы удалить любую подсветку/копию и вставить

-webkit-touch-callout: none;
-webkit-tap-highlight-color: rgba(0,0,0,0); 

Ответ 4

это тоже будет работать.

<body oncontextmenu="return false" ondragstart="return false" 
onselectstart="return false">

Ответ 5

Добавьте это и наслаждайтесь. Работает и на iOS.

<style type="text/css">
*:not(input,textarea) {
    -webkit-touch-callout: none;
    -webkit-user-select: none; /* Disable selection/Copy of UIWebView */
}
</style>

Ответ 6

Я использовал ниже код и отлично работал на устройствах Android и iOS, а также на эмуляторе/симуляторе:

 * {
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    }

   input, textarea {
    -webkit-user-select: auto !important;
    -khtml-user-select: auto !important;
    -moz-user-select: auto !important;
    -ms-user-select: auto !important;
    user-select: auto !important;
    }

Ответ 7

Недавно обновлено до Android 4.4 kitkat, и это решило проблему появления Edittext на taphold (длинное нажатие). По-видимому, edittext не отображается на taphold с jQuery mobile и phonegap на Android 4.4. Я использую пользовательский носитель aosp, поэтому не тестировался в официальном выпуске, но я предполагаю (и надеюсь), что он должен работать и для любого выпуска 4.4. Он также, похоже, разрешил другие конфликты, которые у меня были с onclick, которые я разместил ниже.

Более старый метод, который я нашел, работает (с возможными проблемами) для более старых ролей ICS (только для 4.0.4 пользовательских ромов).
Добавив панель прокрутки

Пример:

<div id="scroll">content</div> 

<style>
#scroll {

height: 100%;
width: 100%;
}
</style>

Он отключает EditText от нажатия на taphold (длительное нажатие) для телефонного разговора и мобильного jQuery. Не уверен, что если это вызовет какие-либо конфликты (как кажется, некоторые эффекты с onclick, которые я смотрю на сортировку), но с регулярным текстом должны работать хорошо.--- Проблемы разобрались с Android 4.4 и больше не нужно прокручивать. (см. верхнюю часть сообщения)

Ответ 8

Для меня это было лучшим:

-webkit-tap-highlight-color: rgba(0,0,0,0); 
tap-highlight-color: rgba(0,0,0,0);

Мой случай произошел с pixi.js, с

plugins.interaction.autoPreventDefault = true;

Ответ 9

* {
    -webkit-touch-callout: none;
    -webkit-user-select: none; 
}

[contenteditable="true"] , input, textarea {
    -webkit-user-select: auto !important;
    -khtml-user-select: auto !important;
    -moz-user-select: auto !important;
    -ms-user-select: auto !important;
    -o-user-select: auto !important;
    user-select: auto !important;  
}