即使“不可选择”方法应该禁用文本选择,它在 IE 中也不能正常工作,至少在 IE8 中。文本光标仍然存在,并允许输入。
我应该假设它在 IE9 中也不起作用,因为 Microsoft 等效 CSS 属性“-ms-user-select”最近才在 IE10 中引入,尚未“正式”发布,目前也不支持Windows 7的。
我还应该质疑为什么也不包括 webkit 版本(“-webkit-user-select”)。我知道 webkit 是 khtml 的一个分支,它似乎在 Chrome 中按预期工作,但我仍然质疑这个遗漏。
/**
* Disables text selection for this element (normalized across browsers)
* @return {Ext.Element} this
*/
unselectable : function(){
var me = this;
me.dom.unselectable = "on";
me.swallowEvent("selectstart", true);
me.applyStyles("-moz-user-select:-moz-none;-khtml-user-select:none;");
me.addCls(Ext.baseCSSPrefix + 'unselectable');
return me;
}
是否有一种简单的方法来修改此代码,以便在 IE10 之前的 IE 版本中提供适当的功能?
编辑:我在让它工作时遇到了一些麻烦。我在 onReady 调用中插入了以下内容,但在应用程序之前。
(function() {
var Ext = window.Ext4 || window.Ext;
Ext.override(Ext.dom.Element, {
unselectable: function() {
var me = this;
me.dom.unselectable = "on";
me.swallowEvent("selectstart", true);
me.applyStyles([
'-moz-user-select: none;',
'-khtml-user-select: none;',
'-webkit-touch-callout: none;',
'-webkit-user-select: none;',
'-ms-user-select: none;',
'user-select: none'
].join());
me.addCls(Ext.baseCSSPrefix + 'unselectable');
return me;
},
selectable: function() {
var me = this;
me.dom.unselectable = "off";
// Prevent it from bubles up and enables it to be selectable
me.on('selectstart', function(e) {
e.stopPropagation();
return true;
});
me.applyStyles([
'-moz-user-select: text;',
'-khtml-user-select: text;',
'-webkit-touch-callout: text;',
'-webkit-user-select: text;',
'-ms-user-select: text;',
'user-select: text'
].join());
me.removeCls(Ext.baseCSSPrefix + 'unselectable');
return me;
},
});
})();
但是,我收到此错误:
未捕获的类型错误:无法读取未定义的属性“元素”