phonegap 2.9 webview iframe designMode 无法删除图片&键盘event 捕获异常

注:发现影响到键盘的使用,不想误导人,所以这个处理保留,后面想到解决方式再记录到这里。

不要吐槽我为什么还用2.9,一个一两天搞定的小工具,去更新后不知道要花多少时间,现有的东西会出什么问题….修复小问题,比折腾新版本妥当点。尝试过找相对近的版本3.x发现都一样。就自己查了下原因解决

这些版本有个问题,虚拟键盘捕获的keycode都为0,而且还出现一些比较奇葩的问题,简单的富文本编辑器里的图片无法删除。

补充个原来先简单应付的删除处理,加了一个按钮,根据获取的光标索引删除内容,现在这个是phonegap里的,其它地方出现的时候,实在不行还是得上。。

					$('#edit_note_btn_delete_img')
							.click(
									function() {
										if (window.edit_note_content.window.document
												.getSelection().focusNode
												.toString() == '[object HTMLBodyElement]') {
											var focusOffset = window.edit_note_content.window.document
													.getSelection().focusOffset;
											$(
													window.edit_note_content.window.document.body.childNodes)
													.eq(focusOffset - 1)
													.remove()
										} else {
											$('body', $edit_note_d).html()
										}
									});

 

http://stackoverflow.com/questions/18093067/cant-delete-image-in-contenteditable-div-on-android/24591285#answer-24591285

解决的代码,参考回答
http://stackoverflow.com/questions/14560344/android-backspace-in-webview-baseinputconnection

org.apache.cordova.CordovaWebView

@Override
public boolean deleteSurroundingText(int beforeLength, int afterLength) {       
    // magic: in latest Android, deleteSurroundingText(1, 0) will be called for backspace
    if (beforeLength == 1 && afterLength == 0) {
        // backspace
        return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL))
            && super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL));
    }

    return super.deleteSurroundingText(beforeLength, afterLength);
}

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注