2017-02-07 41 views
0

页。例如: http://google.com/recaptcha/api2/demo如何获取框架内的元素? (绘制画布)

如果我打开图像“身份识别码”的框架将是 - 例如:帧2

现在我想做的事,是绘制的“画布myid'在'frame2'内。

这里是我的代码:(通过元素的id画)

var canvas = window.document.createElementNS('http://www.w3.org/1999/xhtml', 'html:canvas'); 
var selection_element = window.document.getElementById("myid"); 
var selection; 
var de = window.document.documentElement; 
var box = selection_element.getBoundingClientRect(); 
var new_top = box.top + window.pageYOffset - de.clientTop; 
var new_left = box.left + window.pageXOffset - de.clientLeft; 
var new_height = selection_element.offsetHeight; 
var new_width = selection_element.offsetWidth; 
selection={ 
top:new_top, 
left:new_left, 
width:new_width, 
height:new_height, 
}; 
canvas.height = selection.height; 
canvas.width = selection.width; 
var context = canvas.getContext('2d'); 
context.drawWindow(
window, 
selection.left, 
selection.top, 
selection.width, 
selection.height, 
'rgba(255, 255, 255, 0)' 
); 
var canvasdata = canvas.toDataURL('','').split(',')[1]; 
+0

我不知道你在说什么,但在框架访问的元素:'VAR帧= window.frames [ 'YOUR-FRAME-ID']; (frame).contents()。find('YOUR-CANVAS-ID'') –

+0

@Farzin Kanzii我可以使用类似这样的东西?var canvas = window。 frames.createElementNS('http://www.w3.org/1999/xhtml','html:canvas'); var selection_element = window.frames.getElementById(“myid”); var selection; var de = window.frames.documentElement; –

+0

我不知道'createElementNS'任何东西是否在其他地方工作 –

回答

1

要追加项目框架需要通过id来调用。在这个HTML:

<iframe id="frm1"></iframe> 
<iframe id="frm2"></iframe> 

如果您使用此代码:

$(document).ready(function() 
    { 
     var frames = window.frames; 
     for (var i = 0; i < frames.length; i++) 
     { 
      var fi = frames[i] 

      $(fi).load(function() 
      { 
       $(this).contents().find('body').append("<span>Hello World!</span>"); 
      }); 
     } 
    }); 

不行的,但是这一个工程:

<html> 
<head> 
<title></title> 
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> 

</head> 
<body> 
    <iframe id="frm1"></iframe> 
    <iframe id="frm2"></iframe> 

<script> 
    $(document).ready(function() 
    { 
     var frm1 = window.frames["frm1"]; 
     $(frm1).load(function() 
     { 
      $(frm1).contents().find('body').append("<span>Hello World!</span>"); 
     }); 

    }); 
</script> 
</body></html> 

我试图创建一个代码段,但似乎它有框架问题。

您可以复制确切的HTML并测试它。

+0

谢谢你了没有工作的我,但我想我的问题是更多的。?! 。iMacros的,所以我尽量在iMacros的论坛:http://stackoverflow.com/questions/42096133/javascript-and-imacros-queryselectorall-is-undefined –

+0

我如何ü pvote的帖子?即时新在这里 –

+0

感谢您的支票。 –