javascript - 如何使选定的文本具有黄色

标签 javascript jquery css

如果他们选择文本并按 Ctrl + y,我希望所选文本具有黄色。

类似这样的东西:

在我当前的代码中,如果我选择文本并按ctrl + b,它将变为粗体

类似如果我选择文本并按ctrl + y它应该变成黄色

请参阅 codepen 示例,如下所示,此处不起作用:https://codepen.io/eabangalore/pen/LJeRmq ( fork 以进行编辑)

$(document).on( 'mouseup', '#texteditor',function(e){
  console.log(e);
  var text =    window.getSelection().toString();
});
#texteditor{
  border:1px solid rgba(0,0,8,0.1);
  letter-spacing:6px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="texteditor" contenteditable>
   Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt at dignissimos nemo id excepturi deserunt eius animi est porro consequuntur cupiditate, totam, ullam voluptatem, nam recusandae facilis impedit tenetur nihil.
  
  Lorem ipsum dolor sit amet consectetur adipisicing elit. Doloribus architecto, in iste debitis tenetur consequuntur possimus rem eaque doloremque soluta amet repudiandae unde nobis sunt voluptatem deleniti cupiditate quod quisquam!
</div>

最佳答案

我将事件更改为 keydown 并检查是否同时按下了 ctrl + y 键。然后我选择文本并将颜色更改为黄色。 document.designMode 控制整个文档是否可编辑,我将其设置为“on”。颜色更改完成后,我关闭了 designMode

我根据您的代码创建了一个小 fiddle ,请看一下: https://jsfiddle.net/oat79yvs/2/

$(document).on('keydown', '#texteditor', function(e) {
  if (e.ctrlKey && e.which === 89) {

    sel = window.getSelection();
    if (sel.rangeCount && sel.getRangeAt) {
      range = sel.getRangeAt(0);
    }
    // Set design mode to on
    document.designMode = "on";
    if (range) {
      sel.removeAllRanges();
      sel.addRange(range);
    }
    // Colorize text
    document.execCommand("ForeColor", false, "yellow");
    // Set design mode to off
    document.designMode = "off";
  }
});
#texteditor {
  border: 1px solid rgba(0, 0, 8, 0.1);
  letter-spacing: 6px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="texteditor" contenteditable>
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt at dignissimos nemo id excepturi deserunt eius animi est porro consequuntur cupiditate, totam, ullam voluptatem, nam recusandae facilis impedit tenetur nihil. Lorem ipsum dolor sit amet consectetur
  adipisicing elit. Doloribus architecto, in iste debitis tenetur consequuntur possimus rem eaque doloremque soluta amet repudiandae unde nobis sunt voluptatem deleniti cupiditate quod quisquam!
</div>

关于javascript - 如何使选定的文本具有黄色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52242206/

相关文章:

javascript - 如何在文件名中使用增量编号或不覆盖 18 :00 every day? 的文件来截取网页并保存到硬盘

Javascript AJAX 函数返回类型未定义

javascript - 如何在页面加载时全屏显示图像

html - Thin font-weight 不适用于其他语言的字体

HTML/CSS svg 自动高度和宽度

html - 无法滚动到 Chrome 中绝对元素的底部

javascript - 在 React Native 中将新的键/值添加到对象中

javascript - javascript 将字符串数组解析为新数组

javascript - 返回 jquery 数据表中的输入

javascript - 用 Jquery 替换文本适用于类,但不适用于 id