【发布时间】:2018-03-06 17:01:28
【问题描述】:
使用两行 CSS 手动调整元素的大小非常容易。像这样:
div {
resize: both;
overflow: auto;
/*
/ Styling
*/
width: 100px;
height: 100px;
border: 1px solid #333333;
}
<div></div>
现在我想检测用户何时单击了元素的调整大小句柄。
奇怪的是,Internet Explorer 似乎是唯一将onResize 事件附加到元素(窗口除外)的浏览器。但即使其他浏览器实现了这一点,它也不是我正在寻找的,因为我需要知道何时单击调整大小手柄,而不是调整大小。
我研究了将听众附加到 mousedown 并检查 currentTarget 与 target 以查看它们是否不同。不走运 - 两者都返回元素本身。
我最后,也是最后,最后,最后的手段是检查点击位置,看看它是否在元素的右下角。但这似乎荒谬且不可靠。
是否有可靠的方法来检测元素调整大小手柄上的点击或事件?
【问题讨论】:
-
逻辑上将是 Shadow DOM 的一部分,并且只有用户创建的元素 (afaik) 可以处于打开模式。所以我怀疑除了你提到的 JS 方法(检查鼠标位置)之外,你还能找到一种访问调整器的方法。
-
我使用了你可笑的最后手段。 This answer 给出左上角的点击坐标。减去 offsetWidth,offsetHeight 给出右下角的坐标。这些在主要浏览器中调整大小句柄的范围为 0-20。 (我非常想阻止调整大小触发我用来开始 contentEditable 的点击处理程序。)
标签: javascript css dom-events