JS queryCommandState(“superscript”) 总是返回 false
JS queryCommandState("superscript") always return false
document.queryCommandState("superscript"); //always return false
document.queryCommandState("bold"); // works fine
如何检测内容可编辑元素中的子或 sup?
我来晚了,但只是出于文档目的,我想我会回复它:
这很可能与<sub />
/<sup />
元素的样式有关。在向下@tim的示例中,使用的是默认样式。我更新了小提琴(http://jsfiddle.net/alarie/vzxh3818/)以使用一些样式,然后queryCommandState
将返回false
。(在这种情况下,实际上是破坏它的vertical-align: baseline;
属性)
规范实际上包含有关如何根据有效命令值确定状态的说明:
注意 [有效命令值] 在逻辑上有点像 CSS 计算或解析的值, 事实上,对于大多数命令,它与CSS解析值相同 (请参阅算法的末尾)。我们需要一个单独的概念 由于某种原因我们不能依赖CSS的命令:createLink和 取消链接根本不与CSS相关,backColor和hiliteColor需要 特殊处理,因为背景色不是遗传的 属性、下标和上标依赖于
<sub>
/<sup>
而不是 CSS 垂直对齐,删除线和下划线不映射到唯一 CSS 属性。来源: https://w3c.github.io/editing/execCommand.html#assorted-inline-formatting-command-algorithms
这是上标/下标的实际算法(来自同一规范):
- 让受下标影响 并受上标影响是两个布尔变量,最初都是 假。
虽然节点是内联节点:
注意 火狐 6.0a2 忽略 为此目的垂直对齐,只关心和 标记本身。Opera 11.11 与此类似,实际上行为是这样的 即使是像粗体这样的命令。该规范最初遵循Chrome 14 dev,主要是因为 WebKit 本身将产生跨度 垂直对齐的子或超级,我们希望正确处理它们。 然而,凉介告诉我,WebKit在这里的行为被视为 错误,所以我更改了它以匹配壁虎/歌剧。
如果节点是子节点,则设置为受下标影响为 true。 <- 这是 chrome/webkit 行为不正确的地方
否则,如果节点是 sup,则设置受上标影响为 true。设置 节点到其父节点。如果受下标影响并受以下标影响 上标均为真,返回字符串"混合"。如果受到以下影响 下标为真,返回"下标"。如果受上标影响 true,返回"上标"。返回空值。
因此,到目前为止的解决方案是 1) 不要摆弄风格,或者更确切地说是 2) 自己检查。
- Array.every返回false,而不是类型error
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 为什么当我在数组上测试regex时,它会返回false
- 检查文本区域是否为空总是返回false
- PHP strtotime()为JavaScript日期字符串返回false
- onsubmit返回false,但submit仍然执行
- 这个代码会返回false吗
- Ajax向表单返回false
- 表单验证JavaScript编号总是返回false
- 使用!而in运算符在应该为true时返回false,为什么
- jQuery.is(':checked')总是返回false
- Javascript 下划线每个总是返回 false
- 提交返回 false 总是在 jquery 中
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- 基本JavaScript不断返回false
- 布尔对象上的逻辑 NOT 在 Javascript 中总是返回 false
- jquery focusin没有'调用.focus()并返回false;时无效;
- Ajax-执行成功前返回false
- jQuery JSON flickr提要返回false不工作