将画布上下文插入到动态创建的新窗口 html 中的 html 字符串
Insert canvas context to html string in new dynamically created window html
我创建了一个chrome扩展来拍摄整页屏幕截图。在新窗口中打开图像元素时,它工作正常。但是我需要在 Canvas 元素中显示图像以允许在画布中进行编辑。
以下是chrome.tabs.CaptureTab的事件侦听器的代码:
背景.js
chrome.runtime.onMessage.addListener(
function(request,sender,sendResponse) {
if(Array.isArray(request.image)) {
var canvas = document.createElement('canvas'),
context = canvas.getContext('2d'),
image,
done = 0;
canvas.width = request.width;
canvas.height = request.height;
for(var i = 0; i < request.image.length; i++) {
(function(i) {
image = new Image();
image.onload = function() {
context.drawImage(this, 0, request.image[i].position, this.width, this.height);
if(++done == request.image.length) {
screenshot = canvas.toDataURL('image/png');
var htmlCode = "<html><body> Image here: <p><img border='"2'" src=" + screenshot +"><p> End Image </body></html>";
var url = "data:text/html," + encodeURIComponent(htmlCode);
chrome.tabs.create({url: url});
}
}
image.src = request.image[i].image;
})(i);
}
} else {
var htmlCode = "<html><body> Image here: <p><img border='"2'" src=" + request.image +"><p> End Image </body></html>";
var url = "data:text/html," + encodeURIComponent(htmlCode);
chrome.tabs.create({url: url});
return;
}
});
现在,我尝试了:
var htmlCode = "<html><body> Image here: <p><img border='"2'" src=" + screenshot +"><p> End Image <hr> " + canvas + " </body></html>";
它给出:[object HTMLCanvasELement]
我需要在创建chrome选项卡时嵌入此画布元素
所以我
用
:chrome.tabs.create({url:chrome.extension.getURL("../capturetab.html?tabImage=" + request.source )});
捕获选项卡.html :
<html>
<head>
<script type="text/javascript" src="Scripts/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="Scripts/visibletab.js"></script>
</head>
<body>
<br/><br/>
<canvas id="canvas"></canvas>
<br/><br/>
</body>
</html>
visibketab.js
$( document ).ready(function() {
var imageblob = getUrlParameter('tabImage');
//Set canvas attribute
var myCanvas = document.getElementById('canvas');
var ctx = myCanvas.getContext('2d');
var img = new Image;
img.onload = function(){
// set width and height
ctx.canvas.height = this.height;
ctx.canvas.width = this.width;
ctx.drawImage(img,0,0); // Or at whatever offset you like
};
img.src = imageblob;
});
function getUrlParameter(sParam)
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam)
{
return sParameterName[1];
}
}
}
相关文章:
- 窗口大小html css
- 如何关闭html中的iframe弹出窗口
- javascript弹出窗口没有正确加载html表单
- 按下一个HTML按钮,该按钮使用一个功能在同一个新窗口中打开URL
- 从html锚元素传递窗口对象
- 编辑弹出窗口的HTML的单击命令
- Chrome应用程序在全屏中创建新窗口-html元素不是全高的
- 基本html页面和弹出窗口之间的数据交换
- 使用html中的jquery输入值窗口提示
- HTML 框架 - 防止引导弹出窗口在用户单击正文时消失
- HTML窗口弹出窗口和iPad的正确降级
- 在其他html窗口中创建一个html窗口
- HTML窗口刷新页面顶部
- 如何将数据从Parent html窗口传递到弹出窗口
- 传递COM和访问HTML窗口之间的组件
- 如何显示页面上没有地址栏和状态栏的html窗口
- 跨HTML窗口的Javascript函数调用
- 如何从另一个HTML窗口更改1个HTML窗口的背景图像
- Javascript HTML窗口打印问题
- HTML窗口打开按钮单击在IE中不起作用