Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测浏览器是否支持contentEditable?_Javascript_Jquery_Contenteditable - Fatal编程技术网

Javascript 检测浏览器是否支持contentEditable?

Javascript 检测浏览器是否支持contentEditable?,javascript,jquery,contenteditable,Javascript,Jquery,Contenteditable,有,但发布的解决方案是浏览器嗅探,这是我试图避免的 我需要使我的网站与iPad兼容,也许还有更新的Androids。我一直在使用旧版本的FCKEditor(现在是CK编辑器)作为我的所见即所得编辑器,但这在移动设备上不起作用,所以如果不支持的话,我想将它换成一个简单的文本区域,比如标记 假设它不起作用,因为移动设备往往不支持这个contentEditable属性,这意味着当你点击它时屏幕上的键盘不会弹出 如何检测浏览器是否支持contentEditable?有人建议我用类似于mydiv.cont

有,但发布的解决方案是浏览器嗅探,这是我试图避免的

我需要使我的网站与iPad兼容,也许还有更新的Androids。我一直在使用旧版本的FCKEditor(现在是CK编辑器)作为我的所见即所得编辑器,但这在移动设备上不起作用,所以如果不支持的话,我想将它换成一个简单的文本区域,比如标记

假设它不起作用,因为移动设备往往不支持这个
contentEditable
属性,这意味着当你点击它时屏幕上的键盘不会弹出

如何检测浏览器是否支持
contentEditable
?有人建议我用类似于
mydiv.contentElement===undefined
之类的东西检查有问题的div,但是div(如果它使用的是一个)都内置在FCK编辑器中,并埋在iframe的某个地方

是否有其他方法可以检测浏览器是否支持
contentEditable


刚刚试过这个:

var contentEditableSupport = typeof $('<div contenteditable="true">')[0].contentEditable !== 'undefined';
var contentEditableSupport=typeof$(“”)[0]。contentEditable!='未定义';
在我的iPad上说“真的”。。。。。。我认为不应该


编辑:它返回“字符串”,因为所有属性都是字符串。。。。它只是读取属性。我还能怎么做呢?

您可以创建一个匿名的可编辑div,检查它是否有contentEditable,然后删除该div。

我可以通过检查
contentEditable
属性的默认值而不是状态或类型来实现这一点。表示
contentEditable
缺少的默认值为“inherit”,但在较旧的浏览器(如Android/Gingerbread)中,默认值为“false”。感谢福吉在OP上的评论,为我指明了正确的方向

这个测试对我有用:

var contentEditableSupport = $('<div/>')[0].contentEditable == 'inherit';
var contentEditableSupport=$(“”)[0]。contentEditable=='inherit';
检查执行命令

if (document.execCommand) {
    ... browser supports contentEditable
} else {
    ... browser doesn't support contentEditable    
}

这是我使用的测试,也是。在iOS 4(可能更早)中会出现误报,但不幸的是,在这些环境中无法检测到

var contentEditableSupport = "contentEditable" in document.documentElement;

检查元素是否存在任何属性。你可以这样做

var element = document.createElement('__ELEMENT__');
if ('__PROPERTY__' in element ) {
    // property supported in the browser
}

if ('__PROPERTY__' in document.createElement('__ELEMENT__') ) {
    // property supported in the browser
}
下面的链接包含了所有内容


  • 与Modernizr类似的方法(只有Modernizr不检测可编辑内容)。我不确定这是否有帮助(这里没有要测试的iOS),但默认值为
    $(“”)[0]。contentEditable
    inherit
    。iOS显示了什么?@fudgey:周一必须检查一下。。。我实际上没有iPad。只有一个在工作。@fudgey:无法检查…被转移到其他事情上了。无法访问iPad。测试
    document.execCommand()
    与测试
    contenteditable
    不同。例如,Firefox支持
    document.execCommand()。一般来说,最好测试您感兴趣的实际功能。我接受这个,因为这是一个相当有名的框架。谢谢。@Mark:这很公平,尽管众所周知的框架远非绝对正确。好吧,如果我再回到这里,发现这个解决方案不起作用,并找到一个更好的解决方案,我会偷走你的复选标记;)