浏览器拖动事件未在 GWT 项目中触发
Browser drag event not firing in GWT project
所以我有 2 个项目和一个针对这种情况的第三方应用程序:
app - 主应用
gwt 库 - 我为可重用 GWT 组件构建的库
grapesjs - javascript
中的拖放 html 编辑器
我在 grapesjs 库和 gwt 库操场上创建了一个 gwt 包装器,它工作得很好。但是,当我将这个库导入主应用程序时,我发现将块拖到 canvas 上不起作用。
我尽可能深入地研究了这个问题,发现浏览器 'drag' 事件没有触发。为了更进一步,我进入了不同网站的浏览器控制台,并能够将拖动监听器附加到任何元素,它们会正确触发。您甚至可以在堆栈上尝试。只需检查一个元素,更改为 draggable="true"
并附加一个侦听器:
[=10=].addEventListener([=10=], (event) => { console.log('drag event firing'); });
然后尝试拖动元素,控制台记录将触发。好吧,如果你在我的应用程序中做同样的事情(任何元素,不仅仅是在葡萄组件中),它就不起作用。因此,拖动事件似乎在全球范围内以某种方式被禁用。至少,这是我最好的猜测。我的最终问题是:
什么会导致本机 'drag' 事件不在全局级别触发(在 GWT 或普通 Javascript 中)?
我试过 Chrome 和 FF,它们的行为相同,所以我认为这不是浏览器问题。我不知道我的哪些代码对此有用,但如果有人问我,我可以 post 一些东西。
我终于明白问题出在哪里了。要笼统地回答这个问题,您可以在 index.html:
中禁用所有类型的拖动事件
<body ondragstart="return false;" ondrop="return false">
</body>
删除这些属性让拖动事件再次正常工作。
所以我有 2 个项目和一个针对这种情况的第三方应用程序:
app - 主应用 gwt 库 - 我为可重用 GWT 组件构建的库 grapesjs - javascript
中的拖放 html 编辑器我在 grapesjs 库和 gwt 库操场上创建了一个 gwt 包装器,它工作得很好。但是,当我将这个库导入主应用程序时,我发现将块拖到 canvas 上不起作用。
我尽可能深入地研究了这个问题,发现浏览器 'drag' 事件没有触发。为了更进一步,我进入了不同网站的浏览器控制台,并能够将拖动监听器附加到任何元素,它们会正确触发。您甚至可以在堆栈上尝试。只需检查一个元素,更改为 draggable="true"
并附加一个侦听器:
[=10=].addEventListener([=10=], (event) => { console.log('drag event firing'); });
然后尝试拖动元素,控制台记录将触发。好吧,如果你在我的应用程序中做同样的事情(任何元素,不仅仅是在葡萄组件中),它就不起作用。因此,拖动事件似乎在全球范围内以某种方式被禁用。至少,这是我最好的猜测。我的最终问题是:
什么会导致本机 'drag' 事件不在全局级别触发(在 GWT 或普通 Javascript 中)?
我试过 Chrome 和 FF,它们的行为相同,所以我认为这不是浏览器问题。我不知道我的哪些代码对此有用,但如果有人问我,我可以 post 一些东西。
我终于明白问题出在哪里了。要笼统地回答这个问题,您可以在 index.html:
中禁用所有类型的拖动事件<body ondragstart="return false;" ondrop="return false">
</body>
删除这些属性让拖动事件再次正常工作。