Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Microsoft Edge中是否有与window.clipboardData等效的文件?_Javascript_Microsoft Edge - Fatal编程技术网

Javascript Microsoft Edge中是否有与window.clipboardData等效的文件?

Javascript Microsoft Edge中是否有与window.clipboardData等效的文件?,javascript,microsoft-edge,Javascript,Microsoft Edge,在我们的应用程序中,我们有一个自定义粘贴函数,它调用window.clipboardData.getData(“Text”)来获取当前剪贴板数据。然后对这些数据执行一些函数。在Edge中,window.clipboardData未定义。在“粘贴”事件中使用getData时,似乎确实可以工作,但如下所示 document.addEventListener("paste", function(e) { var test = e.clipboardData.getData("text/plai

在我们的应用程序中,我们有一个自定义粘贴函数,它调用window.clipboardData.getData(“Text”)来获取当前剪贴板数据。然后对这些数据执行一些函数。在Edge中,window.clipboardData未定义。在“粘贴”事件中使用getData时,似乎确实可以工作,但如下所示

document.addEventListener("paste", function(e) {
    var test = e.clipboardData.getData("text/plain");
});
我可能会设计一个解决方案,涉及到对粘贴事件的覆盖,但这并不理想。最好是在事件外部调用解决方案


另一方面,我读到Edge在某一点上不支持剪贴板API,但我的理解是这是固定的,所以请找到一些专门支持当前功能的东西(e.clipboardData工作正常,但不等同于window.clipboardData存在,如果这是您的答案。

Edge与所有现代浏览器一样使用官方:

inp.onpaste=evt=>
console.log(evt.clipboardData.getData('text');

正如Kaido所指出的,在Edge(以及Chrome)中的粘贴事件之外,无法获取粘贴内容

用户以前使用自定义右键单击菜单访问“从Excel粘贴”功能,以将可编辑网格中的内容替换为剪贴板中以制表符分隔的内容。如果window.clipboardData未定义,则用户会收到一条消息,说明您必须在此浏览器中使用标准的CTRL+V粘贴

然后,我在下面添加了侦听器,它基本上确定了内容是否以制表符分隔,并将其视为“从Excel粘贴”,而将其他数据布局视为标准的“粘贴”。这对于我的部署来说已经足够了,但对于其他人来说,可能值得启动一个确认窗口来验证其意图

document.getElementById(myGridID).addEventListener("paste", function(e) {
    var clipboardContent = window.clipboardData ? window.clipboardData.getData("Text") : (e.clipboardData ? e.clipboardData.getData("text/plain") : "");
    if(clipboardContent != null && clipboardContent.indexOf('\t') >= 0)
    {
        MyExcelPasteFunction(myGridID, clipboardContent);
        e.preventDefault();
    }
});

OP想要在没有用户交互的情况下粘贴。@PoulBak他们不能。MS在Edge中解决了这个问题。我很高兴听到这个消息,但OP可能不是。从隐私角度看,我也很高兴。从“让我的intranet系统浏览器兼容”的角度来看透视图,没有那么多。我需要支持粘贴到单个字段中,以及让制表符分隔的数据粘贴替换网格中的多个字段/行。过去我们有一个用于第二种粘贴类型的按钮,但现在我有一个替代粘贴事件的解决方法。我将用我的代码发布一个答案。@BrandonBarkley,如果是用于您的intranet的话你不能简单地在所有帖子上设置一个扩展名吗?扩展名可以无限制地访问剪贴板数据(当授予clipboardRead权限时)。