我正在测试一个小型演示
例如,我有像这样的标签中的文字
<body>
good morning, good morning
abcdef ajska
good morning
ssssss
<body>
例如,当我选择(突出显示)第二个“早上好”时, 我怎么知道,这是本文的第二个出现?
如果我选择“abcdef ajska”, 我怎么知道这是第一次出现在这个文本中?
所以当我选择一个段落时, 我如何知道这个paraghaph的顺序?
这是一个关于选择的演示,
https://medium.com/what-i-learned-today/2c5ec46b86d0
但我只想要某人 使用鼠标选择一个段落,将显示类似警告框的promt 并让我知道选定的paraghaph的顺序是什么?
非常感谢你。 感谢
答案 0 :(得分:1)
我想我明白你想要实现的目标,我有一个想法,虽然它不是很可靠,但也许这可以给你一个良好的开端。
获取突出显示的文本,找到正文中的所有相似文本,并用<span>
包装。然后获取<span>
索引以确定突出显示的文本的出现次数。
我们可以通过获取鼠标click
事件坐标来获取该发生值。然后找到位于该坐标上的<span>
并检索其索引。
我们通过以下方式获得突出显示的文字:
var text;
if(window.getSelection){
text = window.getSelection().toString();
}else if (document.selection && document.selection.type != 'Control'){
//for IE prior to 9
text = document.selection.createRange().text;
}
然后检查文本是否为空或不是空格,并用span:
包装所有相似的文本if($.trim(text).length){
//wrap each word similar to the highlighted text with <span>
var regex = new RegExp(text,'g')
$('body').html($('body').html().replace(regex, '<span>'+text+'</span>'));
}
现在它全部被包裹,我们需要获得原始点击坐标:
$('body').on('click',function(e){
//get the x and y coords
var offset = $(this).offset(),
x = e.clientX - offset.left,
y = e.clientY - offset.top,
})
获取位于该坐标上的新范围:
var el = document.elementFromPoint(x, y)
以下是jsfiddle