5

我知道这里有一个类似的问题,但问题和答案都没有任何代码。

我想做的是将此功能移植到 100% Javascript 解决方案。现在我可以使用 PHP 在 HTML 内容之上绘制一个矩形。

我用 CasperJS 抓取一个网站,拍摄快照,将快照路径连同一个 json 对象发送回 PHP,该对象包含使用 GD 库绘制矩形所需的所有信息。那行得通,但现在我想将该功能移植到 Javascript 中。

我获取矩形信息的方式是使用getBoundingClientRect()它返回一个带有top, bottom, height, width, left, and的对象right

有没有办法将网站的 HTML “绘制”到画布元素,然后在该画布元素上绘制一个 Rectangle?或者有什么方法可以使用 Javascript 在 HTML 上绘制一个矩形?

希望我的问题足够清楚。

这是我用来获取要在周围绘制矩形的元素坐标的函数。

function getListingRectangles() {
    return Array.prototype.map.call(document.querySelectorAll('.box'), function(e) {
        return e.getBoundingClientRect();
});
4

1 回答 1

9

您可以创建一个画布元素并将其放在 HTML 页面的顶部:

//Position parameters used for drawing the rectangle
var x = 100;
var y = 150;
var width = 200;
var height = 150;

var canvas = document.createElement('canvas'); //Create a canvas element
//Set canvas width/height
canvas.style.width='100%';
canvas.style.height='100%';
//Set canvas drawing area width/height
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
//Position canvas
canvas.style.position='absolute';
canvas.style.left=0;
canvas.style.top=0;
canvas.style.zIndex=100000;
canvas.style.pointerEvents='none'; //Make sure you can click 'through' the canvas
document.body.appendChild(canvas); //Append canvas to body element
var context = canvas.getContext('2d');
//Draw rectangle
context.rect(x, y, width, height);
context.fillStyle = 'yellow';
context.fill();

此代码应在距页面左上角 [100, 150] 像素处添加一个黄色矩形。

于 2013-11-07T16:29:31.147 回答