当前位置: 首页 > 面试题库 >

使用Java脚本更改所选文本的CSS

钱稳
2023-03-14
问题内容

我正在尝试制作一个将用作荧光笔的javascript小书签,当按小书签时,将网页上所选文本的背景更改为黄色。

我正在使用以下代码来获取选定的文本,并且工作正常,返回正确的字符串

function getSelText() {
var SelText = '';
if (window.getSelection) {
    SelText = window.getSelection();
} else if (document.getSelection) {
    SelText = document.getSelection();
} else if (document.selection) {
    SelText = document.selection.createRange().text;
}
return SelText;

}

但是,当我创建了一个类似的函数来使用jQuery更改所选文本的CSS时,它不起作用:

function highlightSelText() {
var SelText;
if (window.getSelection) {
    SelText = window.getSelection();
} else if (document.getSelection) {
    SelText = document.getSelection();
} else if (document.selection) {
    SelText = document.selection.createRange().text;
}
$(SelText).css({'background-color' : 'yellow', 'font-weight' : 'bolder'});

}

有任何想法吗?


问题答案:

最简单的方法是使用execCommand(),该命令具有在所有现代浏览器中更改背景颜色的命令。

以下应该在任何选择上做您想要的,包括跨越多个元素的选择。在非IE浏览器中,它会打开designMode,应用背景色,然后designMode再次关闭。

更新

在IE 9中修复。

function makeEditableAndHighlight(colour) {
    var range, sel = window.getSelection();
    if (sel.rangeCount && sel.getRangeAt) {
        range = sel.getRangeAt(0);
    }
    document.designMode = "on";
    if (range) {
        sel.removeAllRanges();
        sel.addRange(range);
    }
    // Use HiliteColor since some browsers apply BackColor to the whole block
    if (!document.execCommand("HiliteColor", false, colour)) {
        document.execCommand("BackColor", false, colour);
    }
    document.designMode = "off";
}

function highlight(colour) {
    var range, sel;
    if (window.getSelection) {
        // IE9 and non-IE
        try {
            if (!document.execCommand("BackColor", false, colour)) {
                makeEditableAndHighlight(colour);
            }
        } catch (ex) {
            makeEditableAndHighlight(colour)
        }
    } else if (document.selection && document.selection.createRange) {
        // IE <= 8 case
        range = document.selection.createRange();
        range.execCommand("BackColor", false, colour);
    }
}


 类似资料:
  • 问题内容: 我有一个JTextPane(或JEditorPane,我可以使用两个都没问题)。如何将选定区域的字体更改为特定字体? 将无法正常工作。(即使是字体家族) 问题答案: 您只能整体更改JTextPane的字体,而不能更改RTF文本。 有一个下面的JEdi​​torPane(显然的JTextPane太),你得到的与保持。您希望将其转换为a ,然后可以对给定的字符序列进行操作。 Java教程h

  • 问题内容: 使用javascript设置内联CSS值很容易。如果我想更改宽度,并且我有这样的html: 我需要做的是: 它将更改内联样式表的值。通常这不是问题,因为内联样式会覆盖样式表。例: 使用此Javascript: 我得到以下内容: 这是一个问题,因为当我有以下条件时,不仅要更改内联值,而且要在设置宽度之前先查找宽度: 返回的值为Null,因此,如果我有Javascript需要知道某种东西的

  • 问题内容: 我正在尝试设置回合部署脚本。我在使用远程登录时遇到了一些麻烦。在远程服务器上创建数据库时,我们需要使用sql帐户(而不是计算机或域,这是针对Server 2008 R2 SP1上的MSSQL 2008R2)登录。有没有办法为回旋连接和运行脚本提供不同的凭据,因为我在文档中没有看到它?谢谢。 问题答案: 如果指定连接字符串而不是服务器名称和数据库名称,则还可以设置凭据。 来自:https

  • 当我突出显示div中的特定文本时,如何更改字体。当我从下拉框中选择字体时,下面的代码将更改整个文本的字体。

  • 问题内容: 我有一个选择框。通过已引用的CSS文件,已使用不同的颜色来设置选项的样式。我希望能够选择一个选项,然后将关闭的选择框的文本颜色更改为所选选项的颜色。 因此,如果我选择“香蕉”,则文本应从黄色变为红色。 我努力了: 但这仅在我在html文档内的选项标签中定义样式时才有效。 我也尝试过JavaScript: 但这总是返回颜色:白色。getStyle函数在我使用过的其他任何地方都可以使用,因

  • 问题内容: Python的新手,第一次发布者,请对我方便!我想在当前文件夹内的特定扩展名(在示例中为)的所有文件中插入一行文本。如果方便的话,它可以指向一个特定的文件夹。 下面是我复制和修改的内容,它确实可以满足我对一个特定文件的需要,完全不需要用SIT替换sit的部分,但是如果删除它,该程序将无法工作。我不知道为什么会这样,但是我可以接受。 我的问题是,如何为目录中的所有文件运行此文件?我尝试用