gpt4 book ai didi

javascript - 从Javascript中的选定区域获取元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:30 26 4
gpt4 key购买 nike

我需要在 Javascript 中实现从选定区域获取元素。这是在 chrome 应用程序中制作更好的类似桌面的 UI 所必需的。最近的例子是在 Imgur 扩展中选择区域:

screenshot

那么问题是:

  1. 如何在 javascript 中完成此选择?
  2. 如何从这个选择中获取元素?

最佳答案

我觉得这很有趣,所以我使用 jQuery 从头开始​​做了一些东西,否则它会变得太复杂:http://jsfiddle.net/EuSBU/1/ .

我希望它足够直截了当,请询问是否有您想知道的事情。

基本上归结为检查每个元素是否被矩形封装。

$("#start_select").click(function() {
$("#select_canvas").show();
});

$('*').bind('selectstart', false);

var start = null;
var ctx = $("#select_canvas").get(0).getContext('2d');
ctx.globalAlpha = 0.5;

$("#select_canvas").mousedown(function(e) {
start = [e.offsetX, e.offsetY];

}).mouseup(function(e) {
end = [e.offsetX, e.offsetY];

var x1 = Math.min(start[0], end[0]),
x2 = Math.max(start[0], end[0]),
y1 = Math.min(start[1], end[1]),
y2 = Math.max(start[1], end[1]);

var grabbed = [];
$('*').each(function() {
if(!$(this).is(":visible")) return;

var o = $(this).offset(),
x = o.left,
y = o.top,
w = $(this).width(),
h = $(this).height();

if(x > x1 && x + w < x2 && y > y1 && y + h < y2) {
grabbed.push(this);
}
});
console.log(grabbed);

start = null;

$(this).hide();

}).mousemove(function(e) {
if(!start) return;

ctx.clearRect(0, 0, this.offsetWidth, this.offsetHeight);
ctx.beginPath();

var x = e.offsetX,
y = e.offsetY;

ctx.rect(start[0], start[1], x - start[0], y - start[1]);
ctx.fill();
});

关于javascript - 从Javascript中的选定区域获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com