我想访问包含img标签的page2.html元素,并将其更新为page1.html img标签或将img of page1.html替换为page2.html img。 这两个文件都在同一个域中,因此无需担心跨域原始策略。
// Page1.html
<body>
<img id="someimage1" src="./captcha.asp"></img>
<iframe src="page2.html"></iframe>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript>
var getImg = $('iframe').contents().find('#someimage2').html();
$('#someimage1').replaceWith('<img>' getImg '</img>');
</script>
</body>
我将DOM更新作为[object] [Object]
// Page2.html
<body>
<img id="someimage2" src="./captcha.asp"></img>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</body>
答案 0 :(得分:1)
我将帮助您使用一个Vanilla JS解决方案,您可以将其修改为JQuery:
首先检查您的IFrame是否包含任何文档
Firefox和Chrome解决方案
var frame = document.getElementById("frame");
if(frame.contentDocument) {
// get the inner Document
var innerDocument = frame.contentDocument;
var img = innerDocument.getElementsByTagName("img")[0];
}
IE解决方案
var frame = document.getElementById("frame");
if(frame.contentDocument) {
// get the inner Document
var innerDocument = frame.contentWindow.document;
var img = innerDocument.getElementsByTagName("img")[0];
}
当你得到图像时,剩下的只是一个DOM操作操作。
获取内部文件正文
var getIFrameCOntent = function(iFrame) {
var frame = document.querySelector(iFrame);
var innerDocument = frame.contentDocument || frame.contentWindow.document;
var body = innerDocument.getElementsByTagName("body")[0];
return body;
}
简单解决方案
var frame = document.getElementById('frame').contentWindow.document.body;
console.log(frame.getElementsByTagName("img")[0]);
答案 1 :(得分:0)
尝试此代码....
page1.html...
<html>
<head>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>
<div id="imgAA">
</div>
<img src="img1.jpg" style="width:100px;" id="imgBB"/>
<script>
$(document).ready(function(){
$("#imgAA").load("page2.html",function(data){
$("#imgBB").attr("src",$("#imgAA").find("img").attr("src"));
});
});
</script>
</body>
page2.html...
<body>
<img src="img2.jpg" style="width:50px;" id="img2"></img>
</body>
试试这个并告诉我它工作正常....