我设计了自己的上下文菜单,其中声明了cut,copy,paste选项。剪切和复制工作正常。粘贴完全无效。如果我使用“剪切/复制”按钮并按ctrl + v,则将其粘贴。我需要使用一个按钮来粘贴复制的文本。请帮帮我。
请帮助我完成此操作。 -
handleCut=(e)=>{
document.execCommand('cut');
}
handlePaste=(e)=>{
document.execCommand('Paste');
}
<input type='button' value='Cut' onClick={handleCut()} />
<input type='button' value='Paste' onClick={handlePaste()} />
答案 0 :(得分:1)
尝试一下
handleCut = (e) => {
document.querySelector('#a').select();
document.execCommand('cut');
}
handlePaste = () => {
navigator.clipboard.readText().then(text => document.querySelector('#a').value = text);
}
<input id="a">
<input type='button' value='Cut' onClick={handleCut()} />
<input type='button' value='Paste' onClick={handlePaste()} />
答案 1 :(得分:0)
我们可以将其粘贴为纯文本,但不能粘贴HTML,因为这是受浏览器限制的。
onPaste=(event)=>{
try{
if((navigator.userAgent.indexOf("MSIE") != -1 ) || (!!document.documentMode == true )) //IF IE > 10
{
let clipboard_data=window.clipboardData.getData('text');
// IE <= 10
if (document.selection){
var range = document.selection.createRange();
range.pasteHTML(clipboard_data);
// IE 11 && Firefox, Opera .....
}else if(document.getSelection){
var range = document.getSelection().getRangeAt(0);
var nnode = document.createElement("SPAN");
range.surroundContents(nnode);
nnode.innerHTML = clipboard_data;
};
}
else if(navigator.userAgent.indexOf("Chrome") != -1 )
{
console.log(navigator.userAgent)
navigator.clipboard.readText()
.then(text => {
document.execCommand('insertHTML',false,text);
})
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
}
else
{
alert("Your browser doesn't support Paste")
}
}
catch(errMsg)
{
alert("Your browser doesn't support Paste");
}
finally{
this.setState({showContextMenu:false})
}
}
<input type='button' onClick={this.onPaste} value='Paste'/>