首页 > 解决方案 > 将剪贴板内容作为字符串变量获取

问题描述

尝试将剪贴板内容作为字符串变量获取(例如,页面 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);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

标签: javascriptjqueryclipboard

解决方案


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

  1. 你的函数是异步的,所以当你调用你的函数时没有return被调用,你的值等于未定义。您可以使用在 func 的参数中传递的 callBack 函数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);
});
<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>


推荐阅读