2015-06-06 183 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:@"\\á"];