gpt4 book ai didi

javascript - 我们如何在 java 脚本中获取相对于他的父元素的选定文本开始集?

转载 作者:行者123 更新时间:2023-11-29 12:45:43 24 4
gpt4 key购买 nike

我在使用 javascript 时遇到了一些问题。场景就像 html 对象有一个父元素 paragraph 和 4 个子元素 span 。当我们选择文本时,我们得到的是相对于 span 元素的文本位置,但我想得到相对于父元素的文本选择文本,所以你能指导我怎么做吗?我正在使用这段代码,每次都给出相对于所选容器的位置,例如

<p>I'm using this code that each time<span>give position with respect to selected container like</span></html>

我想在关于 p 标签而不是关于 span 标签的上层代码中获得文本位置“尊重”。

var sel = window.getSelection();
var selRange = sel.getRangeAt(0);
var start = selRange.startContainer;
var startElemPath = pathOfElement(start);
var startoff = selRange.parentNode.startOffset;
alert("startoff>>"+startoff);
var end = selRange.endContainer;
var endElemPath = pathOfElement(end);
var endoff = selRange.endOffset;

最佳答案

您可以使用此过程来开始和结束选定文本的集合。

function getCaretCharacterOffsetWithin(objectId, win)
{
var startOffSet = 0;
var endOffset = 0;
var element = window.frames[0].document.getElementById(objectId);
var parentInnerHTML = element.innerHTML.toString();
var parentNodeArr = parentInnerHTML.split('');
if(parentInnerHTML != "null"){
var sel;
if (typeof win.getSelection != "undefined")
{
var rangeIndex = 0;
var parentIndex = 0;
var max = parentInnerHTML.length - 1;
var range = win.getSelection().toString();
var rangeNodeArr = range.split('');
var rangeLen = rangeNodeArr.length - 1;
for (parentIndex=0; parentIndex <= max; parentIndex++)
{
if(parentNodeArr[parentIndex] === rangeNodeArr[rangeIndex]){
if(rangeIndex === rangeLen){
break;
}
rangeIndex++;
}else{
rangeIndex = 0;
}
}
endOffset = parentIndex + 1;
startOffSet = parentIndex - rangeIndex;
}
console.log("startOffSet: " + startOffSet + " endOffset: " + endOffset);
return { startOffSet: startOffSet, endOffSet: endOffset };
}else{
console.log("Parent is null");
}
}

关于javascript - 我们如何在 java 脚本中获取相对于他的父元素的选定文本开始集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com