- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过添加这样的 CSS 类以编程方式突出显示搜索词的所有出现:
const style = document.createElement('style');
style.setAttribute('type', 'text/css');
style.innerHTML = `
.word-occurence {
background: yellow;
color: red;
font-weight: bold;
cursor: pointer;
}
`;
document.head.append(style)
document.designMode = "on";
window.getSelection().collapse(document, 0);
const word = 'Ubuntu';
while (window.find(word)) {
document.execCommand('insertHTML', false, '<span class="word-occurence">' + window.getSelection() + '</span>');
window.getSelection().collapseToEnd();
}
document.designMode = "off";
它工作得几乎完美。当我在 Ubuntu 上的 Apache 服务器的默认 HTML 上尝试此操作时(可以在此处找到:
http://bl.ocks.org/SunDi3yansyah/raw/c8e7a935a9f6ee6873a2/),“Ubuntu”一词的所有出现在黄色背景上都变成了红色,但其中一个(第四个又名在他的段落开头的那个)得到了 CSS 内联样式而不是类。它缺少
cursor: pointer
它有一个额外的
font-size: 14.6667px;
我知道
document.execCommand
已弃用,但我非常好奇:那里发生了什么?
最佳答案
在最新的 Chrome 版本中很容易发现这个错误。 insertHTML 命令在更改甚至删除内联元素(例如 [span])的属性时存在错误。在您的情况下,它会破坏作为文本节点第一个单词的任何单词出现的属性。
没有官方规范,但有很多关于可能的错误和解决方法的信息。例如,我按照这篇文章的一些建议,通过将 [span] 替换为 [em] 标记来修复您的代码:Is there a way to keep execCommand("insertHTML") from removing attributes in chrome?
固定部分:
document.execCommand('insertHTML', false, '<em class="word-occurence">' + window.getSelection() + '</em>');
作为副作用,由于标签本身,单词变成了斜体,但类属性现在可以完美运行 - 没有额外的字体大小等。说到额外的字体大小。我发现麻烦不仅在于 Ubuntu 的第 4 次出现,它是 [p] 标签的第一个单词。位于自己的 [span] 元素内的 Logo 附近的第一个单词也受到此错误的影响。
关于execcommand - document.execCommand ('insertHTML' 的奇怪行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66272074/
我试图通过添加这样的 CSS 类以编程方式突出显示搜索词的所有出现: const style = document.createElement('style'); style.setAttribute
我正在尝试使用 execCommand 实现所见即所得的编辑器(我知道存在许多 WYSIWYG 编辑器,但它们对我来说都不够好)。现在,一切正常,但如果我尝试使用 backColor 命令,它似乎不起
我正在使用 vanilla JavaScript 构建一个业余的富文本编辑器,document.execCommand() 对于启用文本编辑器的核心功能至关重要。 例如粗体、斜体和无序列表命令: Ar
我创建一个新的 iframe,然后将其附加到主窗口文档并执行此 javascript: frame.contentDocument.execCommand('insertimage',0,'obama
正如标题所解释的,由于某种原因 document.execCommand('heading', false, 'h1') (或任何其他标题大小)不起作用。但是,其他命令(例如 'bold'、'link
我目前正在制作一个 WYSIWYG 编辑器,但遇到了一些问题。我正在尝试添加链接,但是当我去添加链接时,它会将焦点从 div 上移开,因为用户必须在文本框中键入链接。 我有一个获取光标最后位置的函数:
使用基于选择/键盘命令 的所见即所得 编辑器。效果很好,除了... 与所有其他键盘命令一起,它可以打开和关闭特定样式 I、打击等。 使用 execCommand('bold'),它不会取消加粗文本。这
我想创建一个 WYSIWYG 编辑器,使用 jQuery 作为框架,从中我可以使用不同的方法来简化生产。 我现在确实有一个工作的编辑器,它运行良好。我使用 iFrame,并将其 designMode
如果我在 Firefox 中尝试 execCommand("justifycenter"... 我页面上的一个段落,它不起作用;它给我这个疯狂的错误: uncaught exception: [Exc
所以我正在创建类似在线文本编辑器的东西。在经历了一些错误之后,我只注意到如果我尝试做一些事情,比如在中心对齐一些文本,它会创建一个带有 text-align:center 的 div,因为它应该。但是
不知道这种编辑怎么叫,以前好像在哪里见过。假设您有一篇带有标题、正文和页脚的文章。在您自己的所见即所得编辑器中,每个文章部分都有三个按钮,或者可能有一个包含这些选项的下拉菜单。 当您将文章内容粘贴到编
我有以下 div: 在这个 div 中,我想让特定数量的单词在每次用户输入时都显得粗体。因此,我有以下更改监听器: $('#foo').live('focus', function() { b
我一直在对文档调用 execCommand 以将所选文本加粗或设置其颜色。但最近我需要在一定范围内使用 execCommand 而不是选定的文本。 我可以这样做吗?如果可以,怎么做? 最佳答案 可以,
我试图从我之前创建的特定文本区域中删除tinyMCE,但以下命令不断产生“未定义”错误(使用firebug控制台检查): tinyMCE.execCommand('mceFocus', false,
我有以下代码演示 contenteditable 属性和一个按钮,该按钮将粗体文本注入(inject)到具有 contenteditable 区域的段落中。我的问题是如何在单击粗体后将焦点返回到我离开
这个问题我找了好久,没能解决。我从私有(private) git 存储库中拉下了一个项目。有些人能够构建,而像我这样的其他人却遇到以下错误: Error:Gradle:Execution faile
我正在尝试将网页的所有链接复制到剪贴板。我试图将所有 anchor 标记加入到一个字符串中,将该字符串放入输入字段中,然后通过 document.execCommand("copy") 复制它,但不知
我正在研究带有突出显示选项的自定义文本区域。现在添加了 h1-h4 和粗体选项。 问题: 当我选择文本并单击 Heading1 按钮时,它会设置整行而不是选定文本的样式。当我单击“粗体”按钮时,它仅设
我打算使用 Document.execCommand()方法以及 contenteditable属性来构建我的自定义 WYSIWYG 编辑器。但是当我查看 documentation 时为 Docum
我正在尝试使用 jQuery 和 execCommand 创建一个文本编辑器。一切都很顺利,直到我注意到 superscript 和 subscript 都没有正确切换。 这个 jsFiddle (
我是一名优秀的程序员,十分优秀!