【发布时间】:2023-04-01 18:11:01
【问题描述】:
Dojo Dijit Buttons 使用 CSS 将“真实”按钮隐藏在屏幕外:
.dijitOffScreen {
position: absolute !important;
left: -10000px !important;
top: -10000px !important;
}
- 为什么这会导致 HTML5 拖放功能在 Chrome 和 FireFox 中无法正常工作?
-
有哪些替代方法可以隐藏输入元素并保持相同的 Dojo Dijit 按钮行为?(将
display:none添加到屏幕外输入元素似乎有效,但这在功能上会改变输入的行为吗?因此小部件?)
原问题:
有时,默认的“幽灵”HTML5 拖动图像尺寸较小或根本不呈现。它因浏览器而异,似乎与涉及的 Dojo Dijits 交互。
将 Dijit Button 添加到可拖动的 Dijit ContentPane 后,是什么导致拖动图标在 FireFox 中很小,而在 Chrome 中根本不呈现?
var cp1 = new ContentPane({
style: "width: 400px; height: 124px; background:red",
content: "cp1: 'ghost 'drag icon is tiny or not visible :(<br />",
});
// Make draggable
domProp.set(cp1.domNode, 'draggable', 'true');
cp1.on('dragstart', onDragStartHandler); // otherwise FF doesn't show drag icon
// PROBLEM -> adding button messes up drag icon
button = new Button({label: 'Dijit Button'});
button.placeAt(cp1.containerNode);
更新:
- 除了不正确地呈现拖动图标之外,其他 HTML5 拖放事件也不再正常工作。在 Chrome 上,添加
dragover和/或end事件后,整个文档就会消失。在 FireFox 上,拖动事件的处理速度要慢得多。 - 添加通用 HTML 按钮输入而不是 Dijit 按钮不会导致任何这些副作用:Dojo Dijit 肯定会以某种方式干扰...
更新 2:
- 根本原因:Dijit Button 通过
dijitOffScreen类隐藏了 HTML 按钮输入元素。从元素中删除left: 10000px !important和top: 10000px !important样式会恢复拖放,但会显示空白按钮。信用:Kenneth G. Franqueiro
【问题讨论】:
标签: javascript html draggable dojo