javascript - 将剪贴板内容作为字符串变量获取
问题描述
尝试将剪贴板内容作为字符串变量获取(例如,页面 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>
解决方案
您无法像这样获得剪贴板的价值,原因有两个:
- 你的函数是异步的,所以当你调用你的函数时没有
return
被调用,你的值等于未定义。您可以使用在 func 的参数中传递的 callBack 函数get_clip
来处理您的结果。 - 出于安全原因,您不能以编程方式调用剪贴板导航器不允许您在没有用户操作网页的情况下访问剪贴板。这就是为什么只有单击按钮才能访问用户剪贴板。
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>
推荐阅读
- rabbitmq - RabbitMQ 队列在使用中过期
- java - 如何仅使用按位运算符添加或减去由 char[] 数组表示的两个二进制数
- java - Maven 设置 xml 中服务器凭据的最佳实践
- vhdl - 输出控制不会取任何值 => UUU
- python - 如何从特定接口的 Open API 文件中提取 JSON 模式?
- android - 注入假改造服务以在 AndroidTest 中使用
- java - 如何使用 jgit 检测 origin/master 上是否存在更新版本的本地文件
- python - 这种类型的python函数定义是如何工作的?
- c++ - C++ 从构造函数调用虚函数 - 有没有更好的选择?
- yaml - Azure DevOps Pipeline 动态列出变量组的成员