gpt4 book ai didi

javascript - 为什么 JavaScript 可以在除 Chrome 之外的任何浏览器中执行?

转载 作者:行者123 更新时间:2023-12-03 02:04:35 25 4
gpt4 key购买 nike

我正在使用 Vaadin,并且希望在单击菜单栏的菜单项时通过 JavaScript 执行对上传组件的单击。这在除 Chrome 之外的任何浏览器中都适用。有人提到这是由于 Chrome 的内容安全策略造成的,但 Firefox 也有这个,而且脚本是在 FF 中执行的。

脚本如下所示:

function clickUpload(element) {
// DOM 2 Events
var dispatchMouseEvent = function(target, var_args) {
var e = document.createEvent("MouseEvents");
// If you need clientX, clientY, etc., you can call
// initMouseEvent instead of initEvent
e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1));
target.dispatchEvent(e);
};
dispatchMouseEvent(element, 'mouseover', true, true);
dispatchMouseEvent(element, 'mousedown', true, true);
dispatchMouseEvent(element, 'click', true, true);
dispatchMouseEvent(element, 'mouseup', true, true);
}

menuBar.addItem("Import",
e -> JavaScript.getCurrent().execute("clickUpload(document.getElementsByClassName('gwt-FileUpload')[0])"));

我尝试了其他几种可能性(例如直接在元素上单击()等),并且在 FF 和 Edge 中运行良好,但在 Chrome 中则不然。如果我在 Chrome 控制台中输入“clickUpload(document.getElementsByClassName('gwt-FileUpload')[0])”,脚本也会被执行。

有人知道这种行为从何而来吗?

致以诚挚的问候

最佳答案

如果您碰巧使用 Vaadin 8,并且可以进行设计更改,则 Vaadin 8 中支持 HTML5 文件拖放。有关更多详细信息,请参阅 FileDropTarget:

https://vaadin.com/download/release/8.3/8.3.3/docs/api/com/vaadin/ui/dnd/FileDropTarget.html

关于javascript - 为什么 JavaScript 可以在除 Chrome 之外的任何浏览器中执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49854390/

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