有可靠的方法使用Javascript访问客户端计算机的剪贴板吗?尝试执行此操作时,我仍然遇到权限问题.Google文档如何执行此操作?他们使用Flash吗?
我的主要目标是IE8,但也想支持FF和Chrome.
我已经看到了使用Flash执行此操作的技术,但我正在寻找纯粹的js路由:
使用Flash进行剪贴板访问
我使用下面提到的javascript将文本复制到剪贴板.它在IE中工作,但不适用于Firefox和Chrome.
请指教我,有什么问题?
function setDataToclipboard()
{
var str=document.getElementById("populatedString").value;
if (window.clipboardData && clipboardData.setData) {
clipboardData.setData("Text", str);
alert("Copied!");
}
}
Run Code Online (Sandbox Code Playgroud) 对于使用JQuery-UI选项卡的页面,如何允许用户在选项卡标题中选择文本?
我有一些动态标签,并希望用户能够选择标题复制到剪贴板.
例如在Demo页面上,我希望能够选择复制/粘贴'Nunc tincidunt'.'Proin dolor'和'Aenean lacinia'.甚至是标题的一部分(例如'Proin','Aenean','tincidunt').
我是网站开发的新手,并试图弄清楚如何在点击链接(使用html,php或javascript)时让我的用户自动将代码复制到他/她的鼠标(剪贴板)中.例如,我正在尝试创建这个个人网站,当用户点击我网站上的链接或按钮时,它应该自动将该文本代码复制到剪贴板.我看过像retailmenot.com这样的网站这样做:示例: -

如果可以,请告诉我一个例子
更新:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$("#link").click(function(){
var holdtext = $("#clipboard").innerText;
Copied = holdtext.createTextRange();
Copied.execCommand("Copy");
});
</script>
</head>
<body>
<hr>
<a href="http://www.w3schools.com" style="font-family:arial;color:black;font-size:25px;">Click here to copy the Code</a> <button onclick="copyToClipboard()">Copy Text</button>
<hr>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 当前代码附加一个按钮,可以快速选择<pre>标记中的某些代码.我想要添加的是能够将该内容复制到剪贴板并将按钮文本更改为"复制".
如何通过修改下面的当前工作代码来实现它?我不介意使用clipboard.js,jQuery位或者只是原生的JS支持,因为它是从Chrome 43开始引入的.我只是不知道如何继续添加我需要的东西.
function selectPre(e) {
if (window.getSelection) {
var s = window.getSelection();
if (s.setBaseAndExtent) {
s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
}
else {
var r = document.createRange();
r.setStart(e.firstChild, 0);
r.setEnd(e.lastChild, e.lastChild.textContent.length);
s.removeAllRanges();
s.addRange(r);
}
}
else if (document.getSelection) {
var s = document.getSelection();
var r = document.createRange();
r.selectNodeContents(e);
s.removeAllRanges();
s.addRange(r);
}
else if (document.selection) {
var r = document.body.createTextRange();
r.moveToElementText(e);
r.select();
}
}
var diff = document.getElementById('diff_table').getElementsByTagName('tr');
var difflen = diff.length;
for(i=0; i<difflen; i++) {
var …Run Code Online (Sandbox Code Playgroud) 我刚刚在 Mozilla 页面上看到 execCommand() 已过时https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand
“这个功能已经过时了。虽然它可能仍然在某些浏览器中工作,但不鼓励使用它,因为它可以随时被删除。尽量避免使用它。”
这是我目前用来在用户单击“复制文本”按钮时将文本复制到用户剪贴板的方法。还有另一种方法吗?
var input = // input element with the text
input.focus();
input.setSelectionRange(0,99999);
document.execCommand("copy");
input.blur();
Run Code Online (Sandbox Code Playgroud)
编辑:这如何在 JavaScript 中复制到剪贴板?不回答问题。它提出了相同的过时解决方案。
我注意到document.execCommand('copy')命令在后台运行时会在大约 5 秒后超时。有没有办法绕过这个限制,或者如果需要更长的时间,也许可以回退?
这是我一直用于剪贴板文档的页面。例如,我有一个“准备”数据的函数(从表格数据生成 html),然后是第二个函数将它复制到带有一些附加标记的剪贴板。在大表上,从用户按下 Cmd-C 到生成 html 并能够复制它,这通常可能需要十秒钟。
此外,我注意到 Google Sheets 允许超过五秒的复制操作,所以我很好奇他们会怎么做:
# still works after 25 seconds!
[Violation] 'copy' handler took 25257ms 2217559571-waffle_js_prod_core.js:337
Run Code Online (Sandbox Code Playgroud)
代码被缩小/混淆,因此很难阅读,但这里是上面的文件:https : //docs.google.com/static/spreadsheets2/client/js/2217559571-waffle_js_prod_core.js。
作为参考,正在复制的数据量约为 50MB。请在复制操作上使用约 10 秒的延迟来模拟这个长时间运行的过程。
对于赏金,我希望有人可以展示一个执行单个 Cmd-C 的工作示例:
它必须生成 html 并且必须只涉及单个 Cmd-C(即使我们使用 apreventDefault并在后台触发复制事件。
您可以使用以下内容作为“html-generation”功能应该如何工作的模板:
function sleepFor( sleepDuration ){
var now = new Date().getTime();
while(new Date().getTime() < now + sleepDuration){ /* do nothing */ }
}
// note: the data …Run Code Online (Sandbox Code Playgroud) 如何使用JavaScript代码打开浏览器的JavaScript控制台?
if (ShowConsole() == false)
alert('I cannot open your JavaScript console, please "
+ "use your browser\'s menu to open manually.')
else console.log('now you can see some message')
Run Code Online (Sandbox Code Playgroud)
我建议ShowConsole()功能不存在,并且是我的想象力的产物,您需要转到菜单并找到正确的项目并单击它。并在不同的浏览器中以不同的方式进行操作。我正在寻找一些特定于浏览器的API来帮助懒惰的开发人员。
“打开”是指使其可见,就像用户选择了相应的菜单命令一样。
这是它:)我有id为一个div #toCopy,并与ID按钮#copy.按#copy时,将#toCopy内容复制到剪贴板的最佳方法是什么?
嗨,我相对较新的Javascript所以我的问题可能很容易.我为我的公司开发了多个webapps.我经常遇到的一个问题是Javascript错误.我知道如何使用try/catch来处理它们.
我想要在服务器上写一个日志文件,或者给用户一些他们可以发送给我的东西,而不需要任何调试知识.这意味着,必须通知用户在两种情况下都发生了错误.
我有一个想法是使用try catch并使用我在这里找到的代码:https://stackoverflow.com/a/6055620/3581748,以便用户向我发送堆栈跟踪.
例:
<button id="demo" onClick="errorHandling()">Produce error</button>
<script>
function errorHandling() {
try {
document.getElementById("somethingNotExisting").value * 2;
} catch (_err) {
window.prompt("Copy to clipboard: Ctrl+C, Enter", _err.stack);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
或者在这里:https://jsfiddle.net/n79xv6nt/
哪个适用最多次.
我有时使用jQuery在我的"main"页面中嵌入脚本文件.例:
<div id="forScript"></div>
<script>
$("#forScript").load('scripts/additionalScript.php');
</script>
Run Code Online (Sandbox Code Playgroud)
如果我使用上面的代码(下面的代码"我已经做了什么").我没有得到一个堆栈跟踪,告诉我发生错误的位置.它反而指向一个jQuery文件.Google Chrome控制台会显示真实的堆栈跟踪.另一个问题是,我拿到亚麻布后如何找到文件?在我的IDE中,线条是不同的,因为中间有PHP.
是否有可能为此案件获得良好的错误消息?(最好不要自己抛出错误)如何访问附加脚本并查看chrome看到的相同亚麻布?你会如何通知用户/记录错误?
javascript ×9
jquery ×4
html ×3
clipboard ×2
browser ×1
clipboard.js ×1
console.log ×1
copy ×1
flash ×1
html5 ×1
jquery-ui ×1
php ×1