我实际上是在寻找使用 Angular JS 来模拟复制粘贴的东西来获取剪贴板的内容。
问问题
36278 次
5 回答
9
我创建了一个使用document.execCommand()方法复制到剪贴板的指令。
指示
(function() {
app.directive('copyToClipboard', function ($window) {
var body = angular.element($window.document.body);
var textarea = angular.element('<textarea/>');
textarea.css({
position: 'fixed',
opacity: '0'
});
function copy(toCopy) {
textarea.val(toCopy);
body.append(textarea);
textarea[0].select();
try {
var successful = document.execCommand('copy');
if (!successful) throw successful;
} catch (err) {
console.log("failed to copy", toCopy);
}
textarea.remove();
}
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.bind('click', function (e) {
copy(attrs.copyToClipboard);
});
}
}
})
}).call(this);
html
<button copy-to-clipboard="Copy Me!!!!" class="button">COPY</button>
于 2016-02-04T03:55:56.353 回答
4
这是我使用的简洁版本 -
function copyToClipboard(data) {
angular.element('<textarea/>')
.css({ 'opacity' : '0', 'position' : 'fixed' })
.text(data)
.appendTo(angular.element($window.document.body))
.select()
.each(function() { document.execCommand('copy') })
.remove();
}
于 2016-08-19T01:51:00.430 回答
2
顺便说一句,如果使用 Angular 通过 Chrome 打包应用程序复制到剪贴板,请执行以下操作:
- 将“clipboardRead”和“clipboardWrite”添加到 manifest.json 中的“permissions”。
- 在视图中使用 ng-click 将值提供给控制器 $scope,例如:data-ng-click="copyUrlToClipboard(file.webContentLink)"
在您的控制器中放置一个函数,例如:
$scope.copyUrlToClipboard = 功能(网址){ var copyFrom = document.createElement("textarea"); copyFrom.textContent = url; var body = document.getElementsByTagName('body')[0]; body.appendChild(copyFrom); copyFrom.select(); document.execCommand('copy'); body.removeChild(copyFrom); this.flashMessage('over5'); }
于 2014-10-30T18:18:37.653 回答
0
完全不同的方法:
我需要在窗口之间复制和粘贴文本,所以我用它来保存(复制)数据到本地存储。然后,在另一个窗口中,我使用相同的键将其从本地存储中加载出来,然后我可以随意“粘贴”。
于 2018-10-01T14:49:31.770 回答
0
我遇到了同样的问题,我使用了 angular-clipboard 功能[1],它使用了最新浏览器中可用的新选择 API 和剪贴板 API。
首先我们必须安装 angular-clipboard 库,我使用的是凉亭。
$ bower install angular-clipboard --save
要导入模块,请在 html 中使用以下内容。
<script src="../../bower_components/angular-clipboard/angular-clipboard.js"></script>
在控制器中使用 $scope 为元素设置值
$scope.textToCopy = 'Testing clip board';
使用加载剪贴板模块,
angular.module('testmodule', ['angular-clipboard']);
这适用于 Chrome 43+、Firefox 41+、Opera 29+ 和 IE10+。
它简单且工作正常。
[1] https://www.npmjs.com/package/angular-clipboard
谢谢,
于 2017-05-03T08:47:00.943 回答