gpt4 book ai didi

javascript - 尝试以编程方式选择 UIWebView 中的文本时 setStart 和 setEnd 抛出错误

转载 作者:行者123 更新时间:2023-11-29 03:13:48 26 4
gpt4 key购买 nike

这是我在 UIWebView 中使用的一些 HTML:

<div id = "1">
<span style = "background-color:red">
<a href = "10&20">
This is a link
</a>
</span>
</div>

点击链接后,我想以编程方式在 UIWebView 中选择链接文本(因此“这是一个链接”现在将使用蓝色 iOS 文本选择工具突出显示)。这就是我在 a 标签的 href 中发送一些范围信息的原因。这是我用来尝试进行编程选择的调用:

//set content editable true
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"selectElementContentsInRange(document.getElementById('1'), 10, 20)"]];

这是 javascript 函数:

function selectElementContentsInRange(el, first, second) {
var range = document.createRange();
alert("Makes it here");
range.setStart(el.firstChild, first);
alert("Doesn't make it here");
range.setEnd(el.firstChild, second);

var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}

正如您在警报中看到的那样,它不会在不抛出错误的情况下通过 range.setStart() 调用。 Safari javascript 调试器给我这个错误:

IndexSizeError: DOM Exception 1: Index or size was negative, or greater than the allowed value.

我尝试了很多不同的东西,但没有任何效果。我完全不知所措,非常感谢对如何做到这一点有一些了解。我开始怀疑是否有可能以编程方式在 UIWebView 中选择文本。我错了吗?有人做过吗?

最佳答案

问题是您试图在 <div> 的第一个子节点中设置范围的边界。元素,如果您的 HTML 确实看起来像问题中的那样,则它是一个纯文本节点,或者是 <span>元素,如果您的实际 HTML 中没有空格。在后一种情况下,即在元素中设置范围边界,偏移量表示边界之前元素的子节点数。

关于javascript - 尝试以编程方式选择 UIWebView 中的文本时 setStart 和 setEnd 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21913215/

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