33

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

このようなもの:

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

また:

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

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

4

9 に答える 9

59

htmlではなく、それを置くこと*は私のために働きます:

html {
    -webkit-user-select: none;
}
于 2012-08-06T06:53:00.477 に答える
32

私はこれについて助けを求めてあちこち探しました。これはついに私のために働いた。

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

于 2012-08-08T20:31:46.650 に答える
9

これも機能します。

<body oncontextmenu="return false" ondragstart="return false" 
onselectstart="return false">
于 2014-03-26T13:21:35.533 に答える
8

ThinkingStiffが述べたことと同様に、私は以下を使用してハイライト/コピー&ペーストを削除します

-webkit-touch-callout: none;
-webkit-tap-highlight-color: rgba(0,0,0,0); 
于 2012-08-06T13:14:41.130 に答える
6

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

<style type="text/css">
*:not(input,textarea) {
    -webkit-touch-callout: none;
    -webkit-user-select: none; /* Disable selection/Copy of UIWebView */
}
</style>
于 2015-10-14T05:56:56.907 に答える
1

私は以下のコードを使用し、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;
    }
于 2017-09-04T03:59:19.080 に答える
0

最近Android4.4キットカットに更新され、Edittextがタップホールド(長押し)に表示される問題が解決されました。どうやらedittextは、Android4.4のjquerymobileとphonegapのtapholdに表示されません。私はカスタムaospromを使用しているので、公式リリースではテストしていませんが、4.4リリースでも機能するはずだと推測しています(そして期待しています)。また、以下に投稿したonclickで発生していた他の競合も解決されたようです。

私が見つけた古い方法は、古いICS ROM(4.0.4カスタムROMでのみテスト済み)で機能します(問題が発生する可能性があります)。
スクロールバーを追加する

例:

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

<style>
#scroll {

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

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

于 2014-04-24T17:02:43.530 に答える
0

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

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

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

plugins.interaction.autoPreventDefault = true;
于 2016-09-26T15:04:37.203 に答える
-1
* {
    -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;  
}
于 2017-04-23T20:27:54.387 に答える