【发布时间】:2016-03-21 09:52:45
【问题描述】:
我使用以下代码将 editor.html 放入 iframe 中:
<iframe name= "iframeEditor" id="ifrm" src="editor.html" width="1000" height="500" frameborder="0"></iframe>
然后,我必须在我的“editor.html”中访问脚本应答器中的一个元素:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Diagram</title>
<script type="text/javascript" src="lib/jquery-1.8.1.js"></script>
<!-- I use many resources -->
<script>
function generatePNG (oViewer) {
var oImageOptions = {
includeDecoratorLayers: false,
replaceImageURL: true
};
var sResult = oViewer.generateImageBlob(function(sBlob) {
b = 64;
var reader = new window.FileReader();
reader.readAsDataURL(sBlob);
reader.onloadend = function() {
base64data = reader.result;
var image = document.createElement('img');
image.setAttribute("id", "GraphImage");
image.src = base64data;
document.body.appendChild(image);
}
}, "image/png", oImageOptions);
return sResult;
}
</script>
</head>
<body >
<div id="diagramContainer"></div>
</body>
</html>
我应该从包含我的 editor.htm 的 iframe 访问 image.src,所以我尝试使用以下代码:
<script>
var if1 = document.getElementById("ifrm");
var fc = (if1.contentWindow || if1.contentDocument);
var img1 = fc.document.getElementById("GraphImage");
console.log(img1.src);
</script>
但我收到一个错误:无法读取 null 的属性“src”
【问题讨论】:
-
你确定你的脚本是在图片加载后运行的吗?在onloadend回调中添加一些console.log,并检查它是否在错误之前被调用。
-
我在 onloadend 回调中添加了 console.log,但是当我运行脚本时我没有得到它,我只是在控制台上得到错误
-
这意味着您在加载图像之前运行脚本。在 onloadend 回调结束时运行您的脚本
-
我已经更新了我的代码:
-
现在显示console.log,但在它之前我有一个错误:Uncaught SecurityError: Blocked a frame with origin "null" from access a frame with origin"null"。协议、域和端口必须匹配。
标签: javascript jquery html dom iframe