![](/img/trans.png)
[英]How to disable copy paste,spellcheck,autocomplete in Cordova Android application
[英]How to disable long-click which opens the Android top menu bar with copy/paste/etc. buttons in Cordova Crosswalk apps?
如標題所示,我有一個Cordova應用程序,該應用程序安裝了Cordova Crosswalk插件並可以在Android和iOS上運行。
特別是在Android上,至少在Android 5.1.1和4.4.4版本上(以及可能由於Crosswalk而在所有版本上),每當我長按輸入字段時,我的WebView都會縮小高度並顯示出奇怪的樣式帶剪切/復制/粘貼/剪貼板按鈕的頂部欄,以及關閉頂部欄的“后退”按鈕:
如何防止這種長按? 我嘗試在應用程序的MainActivity.java中的WebView上添加onLongClickListener並調用setLongClickable(false),如下所示:
public class MainActivity extends CordovaActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
// disable the context menu and all long clicks
super.getView().setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
return true;
}
});
super.appView.getView().setLongClickable(false);
Log.i(TAG, "setLongClickable false");
}
}
它似乎沒有任何作用。 我還添加了以下CSS規則:
* {
-webkit-text-size-adjust: none !important;
-webkit-touch-callout: none !important;
-webkit-user-select: none !important;
user-select: none !important;
}
這也沒有效果。
我還嘗試了以下Javascript,該Javascript在呈現任何視圖之前運行(使用Backbone / Marionette / Handlebars)(#viewport是正文中的第一個div元素):
function stopEvent(e) {
e.preventDefault();
e.stopPropagation();
return false;
}
window.oncontextmenu = function (e) {
return stopEvent(e);
};
window.onselectstart = function(e) {
return stopEvent(e);
};
window.ondragstart = function(e) {
return stopEvent(e);
};
$('#viewport').on('taphold', function(e) {
console.log("taphold");
e.preventDefault();
e.stopPropagation();
return false;
});
同樣,沒有效果。
我幾乎可以肯定這是由於Cordova Crosswalk WebView所致,因為在刪除插件后,該行為消失了:長按沒有任何反應。 Crosswalk WebView可能會忽略setLongClickable / setOnLongClickListener方法調用嗎? 也許還有另一個我需要調用這些方法的“隱藏” WebView?
如何禁用頂部欄? 我不介意編輯Cordova或Crosswalk Java源代碼。 謝謝。
編輯:也許這是相關的? https://crosswalk-project.org/jira/browse/XWALK-4786
看起來這是Crosswalk中的錯誤,並且已提交修復它的PR:
在大多數情況下,要停止文本復制欄,您必須設置視圖的屬性:
focusable = false
clickable = false
除非您需要單擊視圖以執行某些操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.