2016-03-03 30 views
0

應用這個代碼在js文件如何在iOS中的WebView Content中獲取突出顯示的文本範圍?

var selectedText = ""; 
function getHighlightedString() 
{ 
    var text = document.getSelection(); 
    startIndex = text.anchorOffset; 
    endIndex = text.focusOffset; 
    selectedText = text.anchorNode.textContent.substr(startIndex,endIndex - text.anchorOffset); 
    var rangeText = document.getSelection().toString(); 
} 
function highlight() { 
if (typeof window.getSelection != "undefined") { 
    var range = document.getSelection().getRangeAt(0); 
    var selectionContents = range.extractContents(); 
    var span = document.createElement("span"); 
    span.appendChild(selectionContents); 
    span.setAttribute("class","uiWebviewHighlight"); 
    span.style.backgroundColor = "rgb(237,191,245)"; 
    span.style.color = "orange"; 
    range.insertNode(span); 
} 
} 

而且我使用此代碼爲突出顯示文本。

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"first" ofType:@"js" inDirectory:@""]; 
NSData *fileData = [NSData dataWithContentsOfFile:filePath]; 
NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]; 
[webView_Detail stringByEvaluatingJavaScriptFromString:jsString]; 

NSString *highlightFunction = [NSString stringWithFormat:@"highlight()"]; 
[webView_Detail stringByEvaluatingJavaScriptFromString:highlightFunction]; 
highlightedString = [webView_Detail          stringByEvaluatingJavaScriptFromString:@"document.documentElement.outerHTML"]; 

我堅持要獲取文本範圍。它必須發送到server.but但我無法獲得選定的文本範圍。 請幫幫我。

回答

0

嘗試以下

NSString * strJS = @"window.getSelection().toString()"; 
NSString * strSelectedText = [self.webView stringByEvaluatingJavaScriptFromString:strJS]; 
NSString *plainText = [self.webView stringByEvaluatingJavaScriptFromString:@"document.body.textContent"]; 
NSRange * rangeOfString = [plainText rangeOfString:strSelectedText]; 

你可以嘗試以下備用還

NSString *plainText = [self.webView stringByEvaluatingJavaScriptFromString: @"document.body.innerText"]; 

如果有發現所選文本的多個匹配,請參考以下鏈接,查看發生的所有範圍。

Find all locations of substring in NSString (not just first)

+0

我沒有得到使用這個範圍。你會提出建議嗎? strClassName即將變爲空白 –

+0

請檢查我的編輯 –

+0

我錯過了添加'toString()'所以它應該是'window.getSelection()。toString()' –

相關問題