Javascript 无法访问iframe中的canvas元素

Javascript 无法访问iframe中的canvas元素,javascript,iframe,canvas,html5-canvas,Javascript,Iframe,Canvas,Html5 Canvas,我得到了一个iframe,我想在这个iframe中选择一个canvas元素。但它不起作用。我正在使用以下代码 这是我的iframe <body> <div id="canvasdiv" width="300" height="300"></div> </body> 在我的父页面中,我得到了以下javascript var iframe = document.getElementById("iframe"); alert(iframe); va

我得到了一个iframe,我想在这个iframe中选择一个canvas元素。但它不起作用。我正在使用以下代码

这是我的iframe

<body>
  <div id="canvasdiv" width="300" height="300"></div>
</body>
在我的父页面中,我得到了以下javascript

var iframe = document.getElementById("iframe");
alert(iframe);
var iframe_canvas = iframe.contentDocument || iframe.contentWindow.document;
alert(iframe_canvas);
var canvas = iframe_canvas.getElementById("canvas");
alert(canvas);
结果:

iframe = iframe element
iframe_canvas = html element
canvas = null

有人知道我为什么不能访问canvas元素吗=

您忽略了添加元素本身的代码。你确定它的id是canvas吗


如果是,那么在访问iFrame内容时可能会遇到同源策略问题。

您忽略了添加元素本身的代码。你确定它的id是canvas吗


如果是,则在访问iFrame内容时可能会遇到同源策略问题。

根据您的HTML,这行代码:

var canvas = iframe_canvas.getElementById("canvas");
应该是这样,以便在div中以正确的id值为目标:

var canvas = iframe_canvas.getElementById("canvasdiv");

根据您的HTML,这行代码:

var canvas = iframe_canvas.getElementById("canvas");
应该是这样,以便在div中以正确的id值为目标:

var canvas = iframe_canvas.getElementById("canvasdiv");

对不起,我解决了这个问题。谢谢你的回复=


为了测试getElementById函数,我用$document.ready调用了它。但此时iframe不是由浏览器渲染的。这就是为什么我可以访问iframe本身,但不能访问iframe的元素。现在我把这个功能分配给一个按钮,它就可以工作了。

对不起,我解决了这个问题。谢谢你的回复=


为了测试getElementById函数,我用$document.ready调用了它。但此时iframe不是由浏览器渲染的。这就是为什么我可以访问iframe本身,但不能访问iframe的元素。现在,我将该功能分配给一个按钮,它可以工作。

除了一个部分之外,您的代码很好。 代替 getElementByIdcanvas 具有
getElementByIdcanvasdiv

除了一个部分,您的代码很好。 代替 getElementByIdcanvas 具有
getElementByIdcanvasdiv

您在JavaScript中使用id画布,但在HTML中使用canvasdiv…您提供的代码不包含任何iframe元素。元素是否具有画布id?此外,您在此处还有不必要的空格标记iframe\u canvas.getiframe的.src是否与主机页位于同一域中?如果不是,则同源安全策略将阻止从父页面访问iframe内容。是的,它们具有相同的主机页。iframe_canvas.get只是一个复制粘贴错误。当你给我们这么小的代码片段时,很难帮助我们。例如,如果canvas是DOM对象,为什么要使用canvas.node.id而不是canvas.id?您在JavaScript中使用的是id画布,但在HTML中使用的是canvasdiv…您提供的代码不包含任何iframe元素。元素是否具有画布id?此外,您在此处还有不必要的空格标记iframe\u canvas.getiframe的.src是否与主机页位于同一域中?如果不是,则同源安全策略将阻止从父页面访问iframe内容。是的,它们具有相同的主机页。iframe_canvas.get只是一个复制粘贴错误。当你给我们这么小的代码片段时,很难帮助我们。例如,如果canvas是DOM对象,为什么要使用canvas.node.id而不是canvas.id?我完成了代码。如您所见,画布的id是canvas=我完成了我的代码。如您所见,画布的id是canvas=好的,我将其更改为“iframe\u canvas.getElementByIdcanvasdiv;”。但是这个值仍然是空的。我想我们必须查看页面的实时版本才能进一步诊断,或者查看您的整个代码和HTML,而不仅仅是您公开的代码片段。代码片段没有问题,所以问题在别处。好的,我将其更改为“iframe_canvas.getElementByIdcanvasdiv;”。但是这个值仍然是空的。我想我们必须查看页面的实时版本才能进一步诊断,或者查看您的整个代码和HTML,而不仅仅是您公开的代码片段。这些片段没有问题,所以问题在别处。