0
這裏編程方式選擇文本時SETEND拋出的錯誤是一些HTML,我在我的UIWebView工作:setStart並試圖在UIWebView的
<div id = "1">
<span style = "background-color:red">
<a href = "10&20">
This is a link
</a>
</span>
</div>
一旦鏈接被點擊,我希望以編程方式選擇鏈接文本在UIWebView中(所以「這是一個鏈接」現在將通過藍色iOS文本選擇工具突出顯示)。這就是爲什麼我要在標籤的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如何看起來btw),它實際上並沒有任何文本來放置範圍。所以我需要獲取子範圍,然後獲取範圍的子錨點標記以便進行範圍選擇。我在看這個嗎?謝謝你的幫助! – Lizza
@Lizza:我認爲,只要所有的範圍都包含在''元素中的那個文本節點中。 –