web-dev-qa-db-ja.com

PhoneGapでテキスト選択を無効にする

テキスト選択を無効にして、PhoneGapアプリを通常のネイティブアプリに類似させることはできますか?

このようなもの:

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

または:

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

または、他の多くのものが機能しません。

32
stmn

私はこれについて助けを求めて一目見ました。これでようやくうまくいきました。

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アプリをホストする)での長いクリックを処理し、泡立つのを防ぐことで機能すると思います。

32
habermanm

*ではなくhtmlに置くと、うまくいきます:

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

ThinkingStiffが言ったことと同様に、ハイライト/コピーと貼り付けを削除するために次も使用します

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

これも機能します。

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

これを追加してお楽しみください。 iOSでも動作します。

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

私は以下のコードを使用し、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;
    }
1
VicJordan

最近Android 4.4 KitKatに更新され、タップホールド(長押し)でEdittextが表示される問題が解決されました。どうやら、jquery mobileとAndroid 4.4。私はカスタムaosp romを使用しているので、公式リリースではテストしていませんが、4.4リリースでも同様に機能することを期待(および期待)しています。以下に投稿したonclickを使用して。

古いICS= ROM(4.0.4カスタムROMでのみテスト))で機能する(考えられる問題を伴う)古い方法。
スクロールバーを追加することにより

例:

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

<style>
#scroll {

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

また、phonegapとjquery mobileのEditholdがタップホールド(長押し)でポップするのを無効にします。これが競合を引き起こすかどうかはまだ分かりませんが(ソートを検討しているonclickでいくつかの影響があるようです)、通常のテキストでうまく機能するはずです。---Android 4.4もうスクロールする必要はありません(投稿の上部を参照)

0
watson7d

私にとってこれは最高でした:

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

私のケースはpixi.jsで起こりました。

plugins.interaction.autoPreventDefault = true;
0
csomakk