在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> 
</div>
答
如前所述,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>
您的代码段导致错误。可能是因为你的iframe的src'指向本地主机 – tommyO
可能重复[搜索字和用jquery突出显示](https://stackoverflow.com/questions/31592132/search-for-word-and-highlight-with -jquery) – RogerC