//??
我想这地方是防止误替换的,以下替换的代码先调用filterNode()函数传parentNode来判断是不是本身是不是
是IMG,A,SCRIPT,OBJECT标签,如果是就不替换。
if (filterNode(parentNode)) { 
var kwAnchor = ' <a href="#" target="_blank" onmouseover="window.clearTimeout(tID);showHwMiniDiv(event, this);" onmouseout="tID=window.setTimeout(\'hideHwMiniDiv()\',1500);">'+ keyword +' </a>'; 
textRange.pasteHTML(kwAnchor); 
//break; 
isF++; 

解决方案 »

  1.   

    谢谢楼上的,但为什么keywords =  ["索尼爱立信","C510c","320","场景模式"]里面的关键字都被替换了两次?
      

  2.   

    replaceKeyword()实现的2种方式的替换 由于
    IE与DOM的创建范围range对象方式不一样
    实现2次替换是由于
     
    while (textRange.findText(keyword)) { 
    //这里实现了2次替换,改成isF>2 将实现3次
    if(isF>1){ 
    break; 

    var parentNode = textRange.parentElement(); 
    if (filterNode(parentNode)) { 
    var kwAnchor = ' <a href="#" target="_blank" onmouseover="window.clearTimeout(tID);showHwMiniDiv(event, this);" onmouseout="tID=window.setTimeout(\'hideHwMiniDiv()\',1500);">'+ keyword +' </a>'; 
    textRange.pasteHTML(kwAnchor); 
    //break; 
    isF++; 

      

  3.   

    谢谢 原来是这样  那只要求替换一次的话 需要改哪些地方?我对DOM操作不懂  试了好几个地方都不行  
      

  4.   

    哦哦  解决了  我把那段代码改成了这样:var isF = 1; 
    if (bIE) { 
    var textRange = document.body.createTextRange(); while (textRange.findText(keyword_content)) { 
    if(isF>1){ 
    break; 

    就可以了 不知道这样是不是对的  总之现在是只替换一次了  再次感谢大家