>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >JS не копирует в буфер обмена http://forum.mozilla-russia.org/viewtopic.php?id=22257 |
Adobe > 24-03-2008 15:33:37 |
Привет всем! Выделить код Код:<script type='text/javascript'> function copy_clip(whattext) { if (window.clipboardData) {window.clipboardData.setData("Text", whattext);} else if (window.netscape) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); if (!clip) return; var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); if (!trans) return; trans.addDataFlavor('text/unicode'); var str = new Object(); var len = new Object(); var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); var copytext=whattext; str.data=copytext; trans.setTransferData("text/unicode",str,copytext.length*2); var clipid=Components.interfaces.nsIClipboard; if (!clip) return false; clip.setData(trans,null,clipid.kGlobalClipboard);} return false;} </script> И собственно кнопка вызывающая JS: И Что самое интересное: на IE работает отлично, а вот в Mozilla - нет |
Shutnik > 24-03-2008 15:52:02 |
по соображениям безопасности не поддерживается в fx копирование в буффер обмена со страниц |
Adobe > 24-03-2008 16:06:48 |
Shutnik пишет
Shutnik пишет
Получается, что в Mozilla вообще никак не реализовать копирование текста в буфер обчена? |
Vednier > 24-03-2008 16:48:22 |
Почему же..реализовать можно |
Shutnik > 24-03-2008 17:52:53 |
Vednier |
Infocatcher > 24-03-2008 21:47:13 |
Кстати, есть варианты с буфером: |
Adobe > 25-03-2008 14:22:26 |
Infocatcher Выделить код Код:function copy_clip(txt) { if(window.clipboardData) { window.clipboardData.setData("Text", txt); } else { var fc = document.getElementById("flashCopier"); if(!fc) { fc = document.createElement("div"); fc.id = "flashCopier"; document.body.appendChild(fc); } fc.innerHTML = '<embed src="password_generator-0.0.3.1_files/clipboard.swf" FlashVars="clipboard=' + encodeURIComponent(txt) + '" width="0" height="0" type="application/x-shockwave-flash"></embed>'; } return false; }, Не работает, что ж такое то |
Infocatcher > 25-03-2008 16:16:36 |
Adobe
Это из-за того, что делалось с совсем другой целью... Выделить код Код:function doClipboard(txt) { if(window.clipboardData) { // IE window.clipboardData.setData("Text", txt); } else { // не IE var fc = document.getElementById("flashCopier"); if(!fc) { // Элемент с "flashCopier" не существует fc = document.createElement("div"); // создаем fc.id = "flashCopier"; // добавляем id document.body.appendChild(fc); // добавляем созданный элемент к <body> } fc.innerHTML = '<embed src="clipboard.swf" FlashVars="clipboard=' + // src="clipboard.swf" - путь к clipboard.swf encodeURIComponent(txt) + '" width="0" height="0" type="application/x-shockwave-flash"></embed>'; } } doClipboard("some text"); P.S. Разумеется, без флеш-плеера работать не будет... P.P.S. А вообще, |
Adobe > 25-03-2008 20:23:32 |
Infocatcher Видите дело то в чем, у меня обычная таблица из 2-х столбцов и множества строк с одновродной инфой, |
Infocatcher > 25-03-2008 20:58:03 |
Файл должен находиться где-нибудь на сервере. А в src надо прописать ссылку на него. |
Adobe > 25-03-2008 21:05:06 |
Infocatcher Странно, не работает почему то, и консоль ошибок молчит Добавлено Tue Mar 25 21:09:51 2008 : Выделить код Код:function doClipboard(txt) { if(window.clipboardData) { // IE window.clipboardData.setData("Text", txt); } else { // не IE var fc = document.getElementById("flashCopier"); if(!fc) { // Элемент с "flashCopier" не существует fc = document.createElement("div"); // создаем fc.id = "flashCopier"; // добавляем id document.body.appendChild(fc); // добавляем созданный элемент к <body> } fc.innerHTML = '<embed src="clipboard.swf" FlashVars="clipboard=' + // src="clipboard.swf" - путь к clipboard.swf encodeURIComponent(txt) + '" width="0" height="0" type="application/x-shockwave-flash"></embed>'; } } кнопка Выделить код Код:<input value=" " onclick="doClipboard('9183B-DD999-6AF78-AC4A1-6B424')" type="button"> |
Infocatcher > 25-03-2008 21:12:43 |
Adobe |
Adobe > 26-03-2008 05:10:15 |
Infocatcher |
Infocatcher > 26-03-2008 08:43:09 |
Adobe |
Adobe > 26-03-2008 09:36:11 |
Нет, нету. Дк получается, что в буфер копируется, все что расположено на clipboard.swf? Так что ли |
Infocatcher > 26-03-2008 09:43:58 |
Значит или это глюк, или скрипт неправильно скопирован...
В смысле? |
Adobe > 26-03-2008 10:49:34 |
Хм, попробовал все это дело вывести ни чистую страницу html - работает, тоже самое в станице php - не работает у меня там правда несколько функций, но думаю это не должно мешать. |
Infocatcher > 26-03-2008 18:17:58 |
Угу, если имена разные. Возможно, проблема в кавычках... Выделить код Код:fc.innerHTML = "<embed src=\"clipboard.swf\" FlashVars=\"clipboard=" + encodeURIComponent(txt) + "\" width=\"0\" height=\"0\" type=\"application/x-shockwave-flash\"></embed>"; |
Unghost > 30-03-2008 18:35:23 |
==> Разработка |
BDSoft > 12-04-2008 01:11:11 |
а возможно получить содержимое буфера обмена? |
sentaus > 12-04-2008 01:21:21 |
А зачем это вообще может быть нужно кроме перехвата паролей пользователей? |