在iframe中突出显示一个单词或句子,使用javascript/jquery

问题描述:

我正在尝试更改iframe标记中单词的背景颜色。我能够搜索单词,但没有得到如何更改颜色。 这是我的代码。在iframe中突出显示一个单词或句子,使用javascript/jquery

$(document).ready(function() { 
 
    $('#content').contents().find('head').append($("<style type='text/css'> .red{color:red;}</style>")); 
 
    var cont = document.getElementById('content').contentWindow.document.body.innerHTML; 
 
      
 
    if($("#content").contents().text().search("SEARCH WORD")!=-1){ 
 
    console.log("Found"); 
 
    //<span class="red"> SEARCH WORD </span> 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div style="padding-left: 0px;" class="col-sm-8 text-center"> 
 
    <iframe id="content" ng-src="http://locahost:8888/public/textfiles/sample.txt" 
 
      width="100%" height="500px" align="middle"></iframe>&emsp; 
 
</div>

+0

您的代码段导致错误。可能是因为你的iframe的src'指向本地主机 – tommyO

+0

可能重复[搜索字和用jquery突出显示](https://*.com/questions/31592132/search-for-word-and-highlight-with -jquery) – RogerC

如前所述,CORS不会让你改变从那么,不正确的CORS航向控制等领域采购的iFrame中。

如果您位于同一个域中,可以执行类似查找单词,修改它,然后用新代码替换iframe的内容。这里是一个working fiddle和代码例如:

<iframe src="http://fiddle.jshell.net/_display/" id="myIframe"></iframe> 
<script> 
var searchWord = "error"; 
$(document).ready(function(){ 
    $('#myIframe').ready(function(){ 
     var $html = $($('#myIframe').contents().find('body').html()); 
    if($html.contents().text().search(searchWord)!=-1){ 
     console.log("Found"); 
     var replaceWith = "<span style='color:red'>"+searchWord+"</span>" 
     var newHTML = $html.text().replace(searchWord, replaceWith); 
     $('#myIframe').contents().find('body').html(newHTML); 
    } 
    }); 
}); 
</script> 
+0

嗨安德鲁,谢谢你的回复。如果iframe src是一个文本文件,该怎么办?在文本文件上也可以使用相同的代码吗? – naik3

+0

当然,我不明白为什么不。只要iFrame src在你自己的域名上。 –

+0

好吧,我会试试这个。感谢您的回复。 – naik3

请不要忘了跨域策略,否则将无法正常工作。 并检查该Search for word and highlight with jquery