您的位置首页百科知识

解决Sencha可编辑div,长按不弹出“复制粘贴”

解决Sencha可编辑div,长按不弹出“复制粘贴”

的有关信息介绍如下:

解决Sencha可编辑div,长按不弹出“复制粘贴”

上述可编辑的div,可以代替textarea做一些高级的功能,比如富文本、@好友等。

但是sencha touch框架,在使用ContentEditable的div的时候,长按时却弹不出“复制粘贴”的菜单,这个现象只影响安卓4.4及以上和iOS。

找到文件 "你的sencha项目\touch\src\viewport\Default.js"。

在Ext.viewport.Default类中添加一个函数,如图

isContentEditable:function(node){

returnnode&&node.tagName=='DIV'&&node.contentEditable=="true";

},

找到doBlurInput函数,修改为下面的代码

if(focusedElement&&focusedElement.nodeName.toUpperCase()!='BODY'

&&!this.isInputRegex.test(target.tagName)&&!this.isContentEditable(target)){

deletethis.focusedElement;

focusedElement.blur();

}

doPreventPanning函数,修改为下面的代码

if(this.isInteractiveWebComponentRegEx.test(target.tagName)&&e.touches&&e.touches.length>0){

touch=e.touches;

if(touch&&touch.target&&this.isInputRegex.test(touch.target.tagName)

&&this.isContentEditable(touch.target)){

return;

}

}

if(target&&target.nodeType===1&&!this.isInputRegex.test(target.tagName)

&&!this.isContentEditable(target)){

e.preventDefault();

}

doPreventZooming函数,修改为下面的代码

if(this.isInteractiveWebComponentRegEx.test(target.tagName)&&e.touches&&e.touches.length>0){

touch=e.touches;

if(touch&&touch.target&&this.isInputRegex.test(touch.target.tagName)

&&this.isContentEditable(touch.target)){

return;

}

}

if(target&&target.nodeType===1&&!this.isInputRegex.test(target.tagName)

&&!this.isContentEditable(target)){

e.preventDefault();

}

这样,“复制粘贴”的菜单在长按可编辑DIV的时候,就可以弹出来了。