2012-08-05 76 views
30

是否可以禁用文本選擇以使PhoneGap應用程序更類似於普通的本機應用程序?在PhoneGap中禁用文本選擇

事情是這樣的:

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

setOnClickListener是什麼魔術。確保你把這個AFTER你的調用super.loadUrl。

當然,這將禁用整個應用程序的文本選擇,但我對此很滿意,現在我暫時還沒有其他辦法。

我不確定這個的完整含義,但我確實使用JqueryMobile事件「taphold」,它仍然正常工作。我相信這是通過長時間點擊appView(託管您的HTML應用程序)並防止它冒泡起作用的。

+0

Thanx它的工作原理!不要忘記在loadUrl之後添加它,否則appView可能爲空。 – guya 2012-12-10 18:34:02

+1

對我來說,我不得不插入一行,所有這些代碼是:super.appView.setLongClickable(false);那麼這個解決方案適用於我。 – 2013-06-26 04:32:48

+0

儘管如何啓用文本選擇?我沒有看到WebView的默認行爲允許文本選擇和一些默認的上下文菜單... – 2015-07-29 22:59:25

52

把它放在html,不*,工作對我來說:

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

這適用於Phonegap,至少在Android上。 – aldavigdis 2014-10-16 08:03:07

+2

也適用於科爾多瓦,在Android上測試 – 2016-02-11 19:32:07

+0

這是我需要使它在WP8上工作的修復程序。在沒有'html'的iOS和Android上工作正常 – 2016-04-30 20:33:06

8

除了ThinkingStiff提到我也使用以下方法來去除任何高亮/複製&粘貼

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

現在沒有突出顯示,點擊後,但如果我持有點,文本選擇工具將打開。我怎樣才能阻止它? :/ – stmn 2012-08-06 17:33:29

8

這也會起作用。

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

這是目前爲止最優雅的解決方案,適用於Android 6和Cordova 6.5.0。 – andreszs 2017-05-05 01:25:37

0

最近更新到Android 4.4 kitkat,它解決了出現在taphold(長按)Edittext的問題。顯然edittext不會在jquery mobile和phonegap上顯示在Android 4.4上。我正在使用自定義的aosprom,所以沒有在官方發佈的版本上進行測試,但我猜測(並且希望)它在任何4.4版本中都應該可以正常工作。它似乎也解決了我在下面發佈的onclick中遇到的其他衝突。

年長的方法,我發現工作(可能有問題),爲老年ICS ROM的(僅適用於4.0.4 ROM定製測試)。
通過添加滾動條

例如:

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

<style> 
#scroll { 

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

它從PhoneGap的和jQuery移動上taphold彈出(長按)以及禁用的EditText。目前還不能確定這是否會引起任何衝突(因爲似乎有一定的onclick影響其期待在整理),但與普通的文本應該很好地工作.--- 問題整理出了Android 4.4,且無需滾動或者再。 (見帖子的頂部)

4

加入此並享受。也適用於iOS。

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

次要更正,應該是規則的簽署:'*:not(input):not(textarea)' – individuo7 2016-03-21 22:29:07

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 2017-04-23 21:51:36

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