我想要一个按钮来选择a中的文本textarea并将其复制到剪贴板.我似乎找不到任何适用于所有浏览器并且不使用闪存的解决方案.
当然这是可行的吗?我已经看到了它的所有地方,但我猜他们使用闪光灯,我真的想尽可能远离,因为有些人没有它.
这是我到目前为止 - 它只是选择文本:
function copyCode() {
$("#output-code").focus();
$("#output-code").select();
}
Run Code Online (Sandbox Code Playgroud)
(重点不是绝对必要的)
我试图在所有浏览器上制作"复制到剪贴板",但没有运气.
我使用的是JavaScript,我不想使用Zero Clipboard来做.
请告诉我们我的代码中有什么问题.
感谢您的帮助.
下面是代码(目前我的代码仅适用于IE浏览器): -
<script type="text/javascript">
function copyToClipboard(s)
{
if( window.clipboardData && clipboardData.setData )
{
clipboardData.setData("Text", s);
}
else
{
// You have to sign the code to enable this or allow the action in about:config by changing
user_pref("signed.applets.codebase_principal_support", true);
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;
// create a transferable
var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;
// specify the data we wish to handle. Plaintext in this case.
trans.addDataFlavor('text/unicode');
// …Run Code Online (Sandbox Code Playgroud) 以下是用户点击此按钮时的代码:
<button id="button1">Click to copy</button>
Run Code Online (Sandbox Code Playgroud)
如何复制此div中的文本?
<div id="div1">Text To Copy</div>
Run Code Online (Sandbox Code Playgroud) 我知道这里有很多次问过这个问题,包括: 如何用JavaScript复制到剪贴板?或者如何使用jQuery将文本复制到客户端的剪贴板?,我缩小了范围:
条件:
有这样的解决方案或解决方法吗?
当尝试在 Android 版 chrome 上复制一些文本时,navigator.clipboard.writeText()只要我之后不显示警报,它就可以工作。当我显示alert()时,它就不再起作用了。
例如,这按预期工作正常
function myFunction() {
var copyText = document.getElementById("myInput");
copyText.select();
copyText.setSelectionRange(0, 99999);
navigator.clipboard.writeText(copyText.value);
}Run Code Online (Sandbox Code Playgroud)
<input type="text" value="Hello world" id="myInput" style="width:auto">
<button onclick="myFunction()">copy</button>Run Code Online (Sandbox Code Playgroud)
然而这不起作用,它不会在控制台中抛出任何错误,并且在 PC 上的 Chrome 上运行良好,但不适用于 Android。
function myFunction()
{
var copyText = document.getElementById("myInput");
copyText.select();
copyText.setSelectionRange(0, 99999);
navigator.clipboard.writeText(copyText.value);
alert("Successfully copied the text")
}Run Code Online (Sandbox Code Playgroud)
<input type="text" value="Hello world" id="myInput" style="width:auto" >
<button onclick="myFunction()" >copy</button>Run Code Online (Sandbox Code Playgroud)
任何人都知道发生了什么事?!谢谢
我正在尝试通过Javascript向表行添加onclick事件.
function addRowHandlers() {
var table = document.getElementById("tableId");
var rows = table.getElementsByTagName("tr");
for (i = 1; i < rows.length; i++) {
row = table.rows[i];
row.onclick = function(){
var cell = this.getElementsByTagName("td")[0];
var id = cell.innerHTML;
alert("id:" + id);
};
}
}
Run Code Online (Sandbox Code Playgroud)
这在Firefox中可以正常工作,但在Internet Explorer(IE8)中,我无法访问表格单元格.我认为这在某种程度上与onclick函数中的"this"被识别为"Window"而不是"Table"(或类似的东西)这一事实有关.
如果我可以访问当前行,我可以在onclick函数中执行getElementById,因为我无法找到这样做的方法.有什么建议?
谢谢!
我的CodeIgniter应用程序使用会话库并将数据保存到数据库.
我遇到了一些问题,在某个ajax调用之后会创建空白会话.
经过调查,似乎有2个同时发生的函数调用需要进行会话验证.一个人会失败而另一个会没事的.
我能够通过不让它们同时发射来解决这个问题.但我仍然不明白原因为什么它会失败.是否与一次更新用户cookie和第二次呼叫失效有关?或者也许在阅读数据库时它会以某种方式死掉?
我稍微查看了Session核心类,但没有发现任何线索.
如果有任何人遇到同样的问题,我会感激任何关于如何调试或原因是什么的建议.
谢谢!
编辑:
我原本说有408状态回归.这是一个无关的案例.
这是并行触发MyVar.refresh()的函数:
function (event)
{
var self$ = this.a$;
var uid = this.b$.val();
var tid = this.c$.val();
var jqxhr = $.post('/controller1/index',{'uid':uid,'tid':tid,'action':true},function(re)
{
if(re.message != 'success')
{
MyVar.alert('<span class="msg_error sprite"></span>' + re.error);
MyVar.refresh();
}
},'json');
MyVar.refresh();
return stopDefault(event);
};
Run Code Online (Sandbox Code Playgroud)
可能的解决方案:
发现这个:http://codeigniter.com/forums/viewthread/102456/
显然它与ajax不能很好地配合.一种解决方案是,如果是ajax调用,则禁止会话更新; 唯一的问题是我们的网站大多是用ajax构建的..
另外,只是将sess_time_to_update降低到非常频繁的状态,并且ajax做得很好.还做了浏览器刷新,它没有超时.不确定为什么会话ID在ajax调用时已经更改,并且浏览器cookie从未更新过.
有没有办法在javascript中将html字符串(即<b>xx<b>)复制到剪贴板中作为text/html,以便可以将其粘贴到例如带格式的gmail邮件中(即xx以粗体显示)
存在以文本(文本/纯文本)形式复制到剪贴板的解决方案,例如/sf/answers/2156722571/,但不是text/html
我需要一个非闪存,非jquery解决方案,至少可以在IE11 FF42和Chrome上运行.
理想情况下,我想在剪贴板中存储字符串的text和html版本,以便可以粘贴正确的版本,具体取决于目标是否支持html.
我有一个Web应用程序,我正在为一个使用图形库的客户端管理,该图形库使用画布生成图形.客户希望用户能够复制站点中的任何图形,以便将其粘贴到word文档中.具体问题:
是否可以将HTML画布元素作为图像复制到剪贴板?
我知道可以将画布保存为图像,但它比复制/粘贴更麻烦.
编辑: 我已经了解到您可以将画布转换为具有数据URI src的图像,但该图像上的复制和粘贴支持是混合的.Firefox允许您从浏览器中复制并粘贴这些图像,但Chrome不允许.
截至目前,似乎没有一种可靠的方法来复制和粘贴canvas元素.
我有一个图像作为DataURL字符串.
我想以编程方式将此图像复制到ClipBoard.
我找到了两个函数,但它们都不起作用.虽然,复制文本时第一个功能很有效 - 复制("Hello!","text");
PS我有一个"clipboardWrite"权限.
第一:
function copy(str, mimetype) {
document.oncopy = function(event) {
event.clipboardData.setData(mimetype, str);
event.preventDefault();
};
document.execCommand("Copy", false, null);
}
Run Code Online (Sandbox Code Playgroud)
第二:
function copyImage(url){
var img=document.createElement('img');
img.src=url;
document.body.appendChild(img);
var r = document.createRange();
r.setStartBefore(img);
r.setEndAfter(img);
r.selectNode(img);
var sel = window.getSelection();
sel.addRange(r);
document.execCommand('Copy');
}
Run Code Online (Sandbox Code Playgroud) javascript ×9
clipboard ×4
jquery ×4
html ×2
ajax ×1
canvas ×1
codeigniter ×1
cookies ×1
copy ×1
copy-paste ×1
dom ×1
dom-events ×1
html5 ×1
session ×1