Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
如何在使用Dart构建的chrome打包应用程序中实现复制和粘贴?_Dart - Fatal编程技术网

如何在使用Dart构建的chrome打包应用程序中实现复制和粘贴?

如何在使用Dart构建的chrome打包应用程序中实现复制和粘贴?,dart,Dart,这就是我取得的成绩: 添加了对清单文件的权限: "permissions": ["clipboardRead", "clipboardWrite"] 我读过关于chrome.experience.clipboard的文章,但这似乎已被删除,取而代之的是document.execCommand(“复制”) 我编写此程序是为了尝试: main(){ var copy=new ButtonElement()…text='copy'; var paste=new ButtonElement()…tex

这就是我取得的成绩:

添加了对清单文件的权限:

"permissions": ["clipboardRead", "clipboardWrite"]
我读过关于chrome.experience.clipboard的文章,但这似乎已被删除,取而代之的是document.execCommand(“复制”)

我编写此程序是为了尝试:

main(){
var copy=new ButtonElement()…text='copy';
var paste=new ButtonElement()…text='paste';
var textarea=new TextAreaElement()…text='foo';
document.body.nodes.addAll([copy,paste,textarea]);
copy.onClick.listen((事件)=>document.execCommand('copy',null,null));
paste.onClick.listen((事件)=>document.execCommand('paste',null,null));
}
理想情况下,对于我的应用程序,我希望编写一个名为getClipboardText()和setClipboardText(String)的函数。但首先,我想让这个基本的例子起作用

有没有关于下一步尝试什么的想法

编辑:更新了amouravski在下面指出的错误。谢谢;)

修正-谢谢Keith:

类剪贴板{
静态字符串获取文本{
var active=document.activeElement;
var hidden=新的TextAreaElement();
document.body.append(隐藏);
focus();
document.execCommand('paste',null',);
active.focus();
隐藏。删除();
返回隐藏值;
}
静态设置文本(字符串s){
var active=document.activeElement;
var hidden=新的TextAreaElement();
hidden.value=s;
document.body.append(隐藏);
hidden.select();
document.execCommand('copy',null',);
active.focus();
隐藏。删除();
}
}

错误消息不是很具有描述性,但您需要做的是提供
document.execCommand
3个参数,如下所示:

。。。
copy.onClick.listen((事件)=>document.execCommand('copy',null,null));
paste.onClick.listen((事件)=>document.execCommand('paste',null,null));
...

另请参见:

您离……不太远。
为了从textarea复制用户选择,在执行copy命令时需要聚焦textarea元素。在代码段中,单击“复制”按钮时,焦点将发生移动。类似地,在执行粘贴命令时,需要聚焦目标textarea

导入'dart:html';
main(){
var copy=new ButtonElement()…text='copy';
var paste=new ButtonElement()…text='paste';
var textarea=new TextAreaElement()…text='foo';
var resultTextarea=新的TextAreaElement();
var label=new ParagraphElement()…text='paste here too…';
document.body.nodes.addAll([copy,paste,textarea,resultTextarea,label]);
//复制处理程序
无效复制文本(事件e){
//检查是否选择了任何内容,否则选择所有文本。
如果(textarea.selectionStart!=空&&
textarea.selectionStart!=textarea.selectionEnd){
textarea.focus();
}否则{
textarea.select();
}
document.execCommand('copy',null,“”);
}
//粘贴处理程序
无效粘贴文本(事件e){
resultTextarea.select();//选择结果文本区域中的所有文本。
//注意:替换所有文本。使用焦点
//在光标位置粘贴。
document.execCommand('paste',null,“”);
}
//注册用于复制和粘贴的按钮处理程序。
copy.onClick.listen(copyText);
粘贴.onClick.listen(粘贴文本);
//您还可以注册粘贴事件侦听器以捕获复制的文本
//直接从剪贴板。
在['paste']上的文档。收听((e){
var item=e.clipboardData.items.item(e.clipboardData.items.length-1);
如果(item.type=='text/plain'){
item.getAsString().then((clip)=>label.text=clip);
}
});
}
几点注意:

  • 对document.execCommand方法签名的更改不太正确。看起来,至少在Dartium中,最后一个参数必须是字符串
  • 通过注册粘贴事件侦听器,可以直接从剪贴板获取粘贴的文本(请参见代码段的底部)
    谢谢你。现在进入下一个障碍。根据此评论,您只能从background.js执行此操作。“我不太确定,”格雷格洛。你应该在打包的应用程序中试一试。这个问题是关于扩展的,它的工作方式不同于打包的应用程序。对不起,我应该说得更清楚一些。谢谢你的修复。这样就消除了错误消息(doh-愚蠢的错误)。但是示例代码仍然没有复制或粘贴。我将更新我的代码示例。再次感谢;)这个(在Dart中)曾经对我有用,但(我能想到的唯一一件事)它在Windows10中不起作用。不幸的是,我不能在另一台机器上检查。还有其他人遇到过这种情况吗?它使Windows剪贴板保持不变。如何创建权限文件?格式是什么?谢谢这里有一个链接到。也许发布一个关于如何做到这一点的新问题,你会得到一个更好的答案。我仍然不清楚。你能发布这个例子的所有文件吗?包括.html、.dart和清单文件吗?谢谢对不起,我没有了。看看你是否能找到Dart chrome应用程序示例。如果找不到,请尝试向dart misc发送消息。