2015-06-06 144 views
0

我试图把我的头围绕这个,但我有点放弃搜索。我不太了解Javascript,但是我的UIWebView有一个.js高亮功能。UIWebView JavaScript Highlight - 如何突出显示特殊字符? (utf8编码?)

我的问题是,它不会突出显示文本,如果它包括任何特殊字符,如:“',à等”

我正在解析一个NSString到.js函数,这可能是造成麻烦,但我不明白,如果我必须解析一个utf8字符,或者如果我必须将字符串转换为UTF8内我的.js。

这里是我的.js代码

function MyApp_HighlightAllOccurencesOfStringForElement(element,keyword) { 
    if (element) { 
    if (element.nodeType == 3) {  // Text node 
     while (true) { 
     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"); 
      span.style.backgroundColor="#C4B695"; 
      span.style.color="black"; 
      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(); 
      MyApp_SearchResultCount++; // update the counter 
     } 
     } 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--) { 
        MyApp_HighlightAllOccurencesOfStringForElement(element.childNodes[i],keyword); 
      } 
      } 
     } 
    } 
} 

// the main entry point to start the search 
function MyApp_HighlightAllOccurencesOfString(keyword) { 
    // MyApp_RemoveAllHighlights(); 
    MyApp_HighlightAllOccurencesOfStringForElement(document.body, keyword.toLowerCase()); 
} 

请让我知道我能提供什么其他信息。

+0

我该如何处理特殊字符,我解析到我的JavaScript代码? – PowerStruggle

回答

0

万一其他人想知道这个问题,解决方案是一个简单的转义字符。感谢大家。

editedSearchString = [editedSearchString stringByReplacingOccurrencesOfString:@"á" withString:@"\\á"];