javascript - 选择和动态设置长 HTML 段落样式的有效方法

标签 javascript html css

<分区>

我正在构建一个呈现长文本段落的文本阅读器,既需要记录对单个单词的点击,也需要为单个单词动态着色。但是,它不需要是可编辑的。

构建此类 html 的最有效方法(适用于现代、移动和浏览器 html 引擎)是什么?我们之前拥有的是每个单词和空格都是它自己的跨度,并且有听众附加到它的东西。这对我来说似乎相当低效。

最佳答案

答案在 https://stackoverflow.com/a/9304990/441757可能会提供一些见解。

http://jsfiddle.net/Vap7C/80/ 有它的演示

$("body").click(function() {
    // Gets clicked on word (or selected text if text is selected)
    var t = '';
    if (window.getSelection && (sel = window.getSelection()).modify) {
        // Webkit, Gecko
        var s = window.getSelection();
        if (s.isCollapsed) {
            s.modify('move', 'forward', 'character');
            s.modify('move', 'backward', 'word');
            s.modify('extend', 'forward', 'word');
            t = s.toString();
            s.modify('move', 'forward', 'character'); //clear selection
        }
        else {
            t = s.toString();
        }
    } else if ((sel = document.selection) && sel.type != "Control") {
        // IE 4+
        var textRange = sel.createRange();
        if (!textRange.text) {
            textRange.expand("word");
        }
        // Remove trailing spaces
        while (/\s$/.test(textRange.text)) {
            textRange.moveEnd("character", -1);
        }
        t = textRange.text;
    }
    alert(t);
});

关于javascript - 选择和动态设置长 HTML 段落样式的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255312/

相关文章:

javascript - 有效的隐藏和表演类(class)

asp.net - 如何左对齐div中的按钮?

css - 如何使用 CSS 将一个图像置于另一个图像之上?

javascript - 如何在 jQuery 中更改事件 img 源时更改类

javascript - 如何使 XPage 应用程序布局左栏可折叠/可调整大小?

javascript - 如何启动 javascript :alert box only if a certain word is typed into the input field?

javascript - 隐藏 Material 轮播中的后退按钮

jquery - 如何在网页加载时从右向左滚动图像?

javascript - 如何将缩小的div放置在父div的中心内

javascript - 一种判断选项是否不适合选择的方法 - 在 IE 中