Отключение выделения текста в PhoneGap


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

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

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

Или:

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

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

9 30

9 ответов:

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

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-это то, что делает магию. Убедитесь, что вы положили это после вашего звонка в супер.вызова loadurl.

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

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

Надев его html, а не *, работает для меня:

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

Это тоже сработает.

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

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

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

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

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

Я использовал приведенный ниже код и его работу на устройствах 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;
    }

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

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

Пример:

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

<style>
#scroll {

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

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

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

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

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

plugins.interaction.autoPreventDefault = true;
* {
    -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;  
}