获取剪贴板内容作为字符串变量

qad*_*nza 5 javascript clipboard jquery

尝试将剪贴板内容作为字符串变量获取(例如复制页面 url);

下面的代码undefined在控制台中返回。

function get_clip(){
	navigator.clipboard.readText().then(text => {return text;})
	.catch(err => {console.error('Failed to read clipboard contents: ', err);});
}

var str = get_clip();
console.log(str);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

小智 4

您无法像这样获取剪贴板的值,原因有两个:

  1. 你的函数是异步的,所以当你调用你的函数时,没有被return调用,你的值等于未定义。您可以使用传入 func 参数的回调函数get_clip来处理结果。
  2. 出于安全原因,您无法以编程方式调用剪贴板。导航器不允许您在没有用户对网页进行操作的情况下访问剪贴板。这就是为什么只需单击按钮您就可以访问用户剪贴板。

function get_clip(callBack) {
  navigator.clipboard.readText()
    .then(text => {
      callBack(text);
    })
    .catch(err => {
      console.error('Failed to read clipboard contents: ', err);
    });
}


let callback = function(str) {
  console.log(str);
};

document.querySelector('#showClipboard').addEventListener('click', function() {
  get_clip(callback);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="showClipboard">click me to show clipboard</button>
Run Code Online (Sandbox Code Playgroud)