2015-02-10 99 views
0

我有我的應用程序註冊突出顯示的單詞,當我通過UIWebview在HTML文件中搜索時。我有的問題是該計劃只是突出選定的單詞。由於我有幾頁,我該如何做到這一點,程序會自動進入單詞突出顯示的位置,而不是滾動,搜索突出顯示的單詞。這是我的代碼到目前爲止。謝謝轉到哪裏單詞突出顯示

function uiWebview_HighlightAllOccurencesOfStringForElement(element,keyword) { 

    if (element) { 
     if (element.nodeType == 3) {  // Text node 
      while (true) { 
       //if (counter < 1) { 
       var value = element.nodeValue; // Search for keyword in text node 
       var idx = value.toLowerCase().indexOf(keyword); 

       if (idx < 0) break;    // not found, abort 

       //(value.split); 

       //we create a SPAN element for every parts of matched keywords 
       var span = document.createElement("span"); 
       var text = document.createTextNode(value.substr(idx,keyword.length)); 
       span.appendChild(text); 

       span.setAttribute("class","uiWebviewHighlight"); 
       span.style.backgroundColor="yellow"; 
       span.style.color="black"; 

       uiWebview_SearchResultCount++; // update the counter 

       text = document.createTextNode(value.substr(idx+keyword.length)); 
       element.deleteData(idx, value.length - idx); 
       var next = element.nextSibling; 
       element.parentNode.insertBefore(span, next); 
       element.parentNode.insertBefore(text, next); 
       element = text; 

      } 
     } else if (element.nodeType == 1) { // Element node 
      if (element.style.display != "none" && element.nodeName.toLowerCase() != 'select') { 
       for (var i=element.childNodes.length-1; i>=0; i--) { 
        uiWebview_HighlightAllOccurencesOfStringForElement(element.childNodes[i],keyword); 
       } 
      } 
     } 
    } 
} 

回答

1

//我使用的代碼對於接下來與以前的功能,它工作正常 //功能

uiWebview_HighlightAllOccurencesOfNextStringForElement(元素,關鍵詞){

if (element) { 
     if (element.nodeType == 3) {  // Text node 
      while (true) { 
       //if (counter < 1) { 
       var value = element.nodeValue; // Search for keyword in text node 
       var idx = value.toLowerCase().indexOf(keyword); 

       if (idx < 0) break;    // not found, abort 

       var span = document.createElement("span"); 
       var text = document.createTextNode(value.substr(idx,keyword.length)); 
       span.appendChild(text); 
       span.setAttribute("class","MyAppHighlight"); 
       text = document.createTextNode(value.substr(idx+keyword.length)); 
       element.deleteData(idx,value.length-idx); 
       var next = element.nextSibling; 
       element.parentNode.insertBefore(span,next); 
       element.parentNode.insertBefore(text,next); 
       element = text; 
       span.scrollIntoView(); 
       span.style.backgroundColor = "yellow"; 

       span.style.color = "black"; 
       a.push(span); 

       uiWebview_SearchResultCount++; 



      } 
     } else if (element.nodeType == 1) { // Element node 
      if (element.style.display != "none" && element.nodeName.toLowerCase() != 'select') { 
       for (var i=element.childNodes.length-1; i>=0; i--) { 
        uiWebview_HighlightAllOccurencesOfNextStringForElement(element.childNodes[i],keyword); 
       } 
      } 
     } 
    } 
} 

// the main entry point to start the search 
function uiWebview_HighlightAllOccurencesOfNextString(keyword) 
`enter code here`{ 
    uiWebview_RemoveAllHighlights(); 
    uiWebview_HighlightAllOccurencesOfNextStringForElement(document.body, keyword.toLowerCase()); 

} 

//而不是在您的ViewContrlller中在Next和Previous按鈕方法上調用此函數

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
{ 
    [self highlightAllOccurencesOfNextString:searchbar.text]; 
} 

- (NSInteger)highlightAllOccurencesOfNextString:(NSString*)str 
{ 
    NSString *filePath = [[NSBundle mainBundle]pathForResource:@"UIWebViewSearch" ofType:@"js"]; 
    NSData *fileData = [NSData dataWithContentsOfFile:filePath]; 
    NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]; 
    [htmlWebView stringByEvaluatingJavaScriptFromString:jsString]; 

    NSString *startSearch = [NSString stringWithFormat:@"uiWebview_HighlightAllOccurencesOfNextString('%@')",str]; 
    [htmlWebView stringByEvaluatingJavaScriptFromString:startSearch]; 
    NSString *result = [htmlWebView stringByEvaluatingJavaScriptFromString:@"a.length"]; 
    currentPosition = [result intValue] - 1; 
    return [result integerValue]; 

} 

-(void)nextMethod 
{ 
    currentPosition -= 1; 
    NSString *nextScrollPosition = [NSString stringWithFormat:@"a[%d].scrollIntoView()", currentPosition]; 
    [htmlWebView stringByEvaluatingJavaScriptFromString:nextScrollPosition]; 
} 

-(void)previousMethod 
{ 
    currentPosition += 1; 
    NSString *previousScrollPosition = [NSString stringWithFormat:@"a[%d].scrollIntoView()", currentPosition]; 
    [htmlWebView stringByEvaluatingJavaScriptFromString:previousScrollPosition]; 
}