2012-08-05 37 views
30

Có thể tắt chọn văn bản để làm cho ứng dụng PhoneGap giống với ứng dụng gốc thông thường hơn không?Tắt chọn văn bản trong PhoneGap

Something như thế này:

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

hay:

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

Hoặc nhiều thứ khác không có tác dụng.

Trả lời

32

tôi nhìn khắp nơi để được giúp đỡ về điều này. Điều này cuối cùng đã làm việc cho tôi.

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 là điều kỳ diệu. Hãy chắc chắn rằng bạn đặt sau SAU cuộc gọi của bạn để super.loadUrl.

Tất nhiên, điều này sẽ tắt chọn văn bản cho toàn bộ ứng dụng của bạn, nhưng tôi đồng ý với điều đó và hiện tại tôi không có bất kỳ cách nào khác.

Tôi không chắc chắn về ý nghĩa hoàn chỉnh của điều này, nhưng tôi sử dụng sự kiện JqueryMobile "chạm" và vẫn hoạt động tốt. Tôi tin rằng điều này hoạt động bằng cách xử lý các nhấp chuột dài trên appView (mà lưu trữ ứng dụng HTML của bạn) và ngăn chặn nó từ sủi bọt lên.

+0

Thanx nó hoạt động! Đừng quên thêm nó sau loadUrl nếu không appView có thể là null. – guya

+1

cho tôi tôi phải chèn thêm một dòng với tất cả các mã này là: super.appView.setLongClickable (false); sau đó giải pháp này làm việc cho tôi. –

+0

Làm thế nào để bạn bật tính năng chọn văn bản? Tôi không thấy hành vi mặc định của WebView để cho phép chọn văn bản và một số menu ngữ cảnh mặc định cho nó ... –

52

Đưa nó trên html, không *, công trình đối với tôi:

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

Tính năng này hoạt động trên Phonegap, ít nhất là trên Android. – aldavigdis

+2

Cũng hoạt động trên Cordova, được thử nghiệm trên android –

+0

Đây là bản sửa lỗi tôi cần để làm cho nó hoạt động trên WP8. Đã hoạt động tốt trên iOS và Android mà không có 'html' –

8

Cũng như những gì ThinkingStiff nêu Tôi cũng sử dụng sau đây để loại bỏ bất kỳ làm nổi bật/sao chép & dán

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

Bây giờ không có đánh dấu, sau một lần nhấp, nhưng nếu tôi giữ điểm, công cụ chọn văn bản sẽ mở ra. Làm thế nào tôi có thể chặn nó? :/ – stmn

8

điều này cũng sẽ hoạt động.

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

Đây là giải pháp thanh lịch nhất cho đến nay, hoạt động trên Android 6 và Cordova 6.5.0. – andreszs

0

Cập nhật gần đây lên Android 4.4 kitkat và giải quyết sự cố của Edittext hiển thị trên taphold (nhấn và giữ). Rõ ràng edittext không hiển thị trên taphold với jquery di động và phonegap trên Android 4.4. Tôi đang sử dụng một rom rom tùy chỉnh vì vậy đã không được thử nghiệm trên một bản phát hành chính thức nhưng tôi đoán (và hy vọng) nó sẽ làm việc tốt cho bất kỳ phiên bản 4.4. Nó cũng có vẻ giải quyết xung đột khác tôi đã có với onclick mà tôi đăng dưới đây.

Phương pháp cũ hơn tôi thấy rằng hoạt động (với các vấn đề có thể xảy ra) đối với các gói ICS cũ hơn (chỉ được thử nghiệm trên 4.0.4 rom tùy chỉnh).
Bằng cách thêm vào một thanh cuộn

dụ:

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

<style> 
#scroll { 

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

Nó vô hiệu hóa các EditText từ popping trên taphold (dài báo chí) cho PhoneGap và jquery di động là tốt. Không chắc chắn nếu điều này sẽ gây ra bất kỳ xung đột (như dường như có một số hiệu ứng với onclick mà đang xem xét phân loại ra) nhưng với văn bản thường xuyên sẽ làm việc tốt .--- Các vấn đề được sắp xếp ra với Android 4.4 và không cần phải di chuyển nữa . (xem đầu bài đăng)

4

Thêm nội dung này và thưởng thức. Hoạt động trên iOS.

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

chỉnh sửa nhỏ, việc ký kết quy tắc phải là: '*: không (đầu vào): không (văn bản)' – individuo7

0

Đối với tôi đây là tốt nhất:

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

trường hợp của tôi đã xảy ra với pixi.js, với

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

Vui lòng thêm giải thích với câu trả lời của bạn, điều này có thể hữu ích cho những người khác trong tương lai. [câu trả lời] – cosmoonot

1

tôi đã sử dụng mã dưới đây và làm việc của mình tốt trên Android và thiết bị iOS cũng như trên trình giả lập/mô phỏng:

* { 
    -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; 
    } 
Các vấn đề liên quan