2012-08-05 17 views
30

में टेक्स्ट चयन को अक्षम करना क्या फोनगैप ऐप को सामान्य देशी ऐप के समान बनाने के लिए टेक्स्ट चयन को अक्षम करना संभव है?फोनगैप

कुछ इस तरह:

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

या:

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

या कई अन्य चीजें काम नहीं करते।

उत्तर

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; 
      } 
     }); 
    } 
} 

सेटऑनक्लिक लिस्टर जादू क्या करता है। सुनिश्चित करें कि आपने इसे अपने कॉल के बाद super.loadUrl पर रखा है।

बेशक

, इस अपने पूरे अनुप्रयोग के लिए पाठ चयन को निष्क्रिय कर देगा, लेकिन मैं उस के साथ ठीक हूँ, और मैं अब के लिए इसके चारों ओर किसी अन्य तरीके से नहीं है।

मैं अभी तक इस बात का पूरा प्रभाव के बारे में सुनिश्चित नहीं हूँ, लेकिन मैं jquerymobile घटना "taphold" का इस्तेमाल करते हैं, और यह अभी भी ठीक काम करता है। मेरा मानना ​​है कि यह ऐप व्यू (जो आपका एचटीएमएल ऐप होस्ट करता है) पर लंबे क्लिक को संभालने और इसे बुलबुले से रोकने से काम करता है।

+0

Thanx यह काम करता है! LoadUrl के बाद इसे जोड़ने के लिए मत भूलना अन्यथा ऐप व्यू शून्य हो सकता है। – guya

+1

मेरे लिए मुझे इस कोड के साथ एक और पंक्ति डालना है: super.appView.setLongClickable (false); तो यह समाधान मेरे लिए काम करता है। –

+0

हालांकि आप पाठ चयन को कैसे सक्षम करते हैं? मुझे टेक्स्ट चयन और कुछ डिफ़ॉल्ट संदर्भ-मेनू के लिए वेबव्यू का डिफ़ॉल्ट व्यवहार दिखाई नहीं देता है ... –

52

html पर लाना, नहीं *, काम करता है मेरे लिए:

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

यह कम से कम एंड्रॉइड पर फोनगैप पर काम करता है। – aldavigdis

+2

एंड्रॉइड –

+0

पर परीक्षण किए गए कॉर्डोवा पर भी काम करता है यह वही था जिसे मुझे WP8 पर काम करने के लिए आवश्यक था। 'Html' –

8

साथ ही क्या उल्लेख किया ThinkingStiff मैं भी किसी भी हाइलाइटिंग/कॉपी पेस्ट &

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

के बिना आईओएस और एंड्रॉइड पर ठीक काम कर रहा था अब एक क्लिक के बाद कोई हाइलाइट नहीं है, लेकिन यदि मैं पॉइंट रखता हूं, तो टेक्स्ट चयन टूल खुल जाएगा। मैं इसे कैसे रोक सकता हूं? :/ – stmn

8

यह भी काम करेगा।

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

यह अब तक का सबसे सुरुचिपूर्ण समाधान है, एंड्रॉइड 6 और कॉर्डोवा 6.5.0 पर काम करता है। – andreszs

0

हाल ही में करने के लिए एंड्रॉयड 4.4 किटकैट अद्यतन और यह taphold (लंबी प्रेस) पर दिखाया जा रहा Edittext की समस्या हल हो गई। स्पष्ट रूप से edittext jquery मोबाइल और एंड्रॉइड 4.4 पर फोनगैप के साथ टैपहोल्ड पर प्रदर्शित नहीं होता है। मैं एक कस्टम एओएसपी रोम का उपयोग कर रहा हूं, इसलिए मैंने आधिकारिक रिलीज पर परीक्षण नहीं किया है, लेकिन अनुमान लगा रहा हूं (और उम्मीद कर रहा है) इसे किसी भी 4.4 रिलीज के लिए भी काम करना चाहिए। यह उन अन्य संघर्षों को हल करने का भी प्रतीत होता है जिनके साथ मैं नीचे पोस्ट किया गया था।

पुराने विधि मैंने पाया कि (संभावित समस्याओं के साथ) बड़े आईसीएस रोम (केवल 4.0.4 कस्टम रॉम पर परीक्षण) के लिए काम करता है।
एक स्क्रॉलबार

उदाहरण जोड़ कर:

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

<style> 
#scroll { 

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

यह taphold पर और साथ phonegap और jQuery मोबाइल के लिए (लंबी प्रेस) पॉपिंग से EditText अक्षम करता है। अभी तक सुनिश्चित नहीं है कि इससे कोई विवाद हो सकता है (जैसा लगता है कि ऑनक्लिक पर कुछ प्रभाव पड़ता है जो सॉर्टिंग को देख रहा है) लेकिन नियमित पाठ के साथ अच्छी तरह से काम करना चाहिए .--- एंड्रॉइड 4.4 के साथ सॉर्ट किए गए मुद्दे और अब स्क्रॉल की आवश्यकता नहीं है । (पोस्ट के शीर्ष देखें)

4

इसे जोड़ें और आनंद लें। आईओएस पर भी काम करता है।

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

मामूली सुधार, नियम पर हस्ताक्षर होना चाहिए: '*: नहीं (इनपुट): नहीं (textarea)' – individuo7

0

मुझे इस के लिए सबसे अच्छा था:

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

मेरे मामले pixi.js के साथ हुआ,

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

कृपया अपने उत्तर के साथ स्पष्टीकरण जोड़ें, जो भविष्य में दूसरों के लिए सहायक हो सकता है। [जवाब] – cosmoonot

1

मैं नीचे दिए गए कोड का इस्तेमाल किया और अपने Android पर ठीक काम कर रहा साथ और आईओएस डिवाइस के साथ ही एमुलेटर/सिम्युलेटर पर:

* { 
    -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; 
    }