imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 14.05.2004, 19:03     # 1
Makc
::VIP::
 
Аватар для Makc
 
Регистрация: 13.08.2003
Адрес: Москва
Сообщения: 1 137

Makc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc Гуру
JavaScript + буфер обмена

Уважаемые!

Я столкнулся с такой проблемой: мне надо скопировать определенный текст в буфер обмна, делаю я это так:
Код:
function ToClipboard(link) {
document.execCommand("Copy")
window.clipboardData.setData("Text", link);
}
Но беда в том, что работает это только в IE... Помогите модифицировать таким образом, что бы функция корректно работала в Mozilla.
__________________
Makc aka Maximus (on other boards)
Makc вне форума  
Старый 14.05.2004, 23:10     # 2
azot
Newbie
 
Регистрация: 11.03.2003
Сообщения: 16

azot Путь к славе только начался
google ==>

Код:
function toclip(cmd) {
  if (window.clipboardData) {
    window.clipboardData.setData('Text', cmd);
  } else if (window.netscape) {
	netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');   
        var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
        if (!str)
          return;
        str.data = cmd;
        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');
        trans.setTransferData('text/unicode',str,cmd.length*2);
        var clipid = Components.interfaces.nsIClipboard;
        clip.setData(trans,null,clipid.kGlobalClipboard);
  }
        return false;
}
про "netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnec t');" читаем тут:
http://www.mozilla.org/projects/secu...d-scripts.html

т.е. это дело получится только если юзер разрешит
azot вне форума  
Старый 14.05.2004, 23:13     # 3
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
взято из MSDN:

Command Copy

...

Minimum Availability

Internet Explorer 4.0 and later.

...

p.s. clipboard - это Windows. интересно было бы взглянуть на widget-clipboard

Последний раз редактировалось Sheryld; 14.05.2004 в 23:36.
Sheryld вне форума  
Старый 16.05.2004, 00:37     # 4
Makc
::VIP::
 
Аватар для Makc
 
Регистрация: 13.08.2003
Адрес: Москва
Сообщения: 1 137

Makc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc ГуруMakc Гуру
azot, пасиб!!! Но только вот эксплорер ругается и не хочет ничего делать... Говорит "предполагается наличае обьекта, строка 1, символ 1"...
Что не так?
__________________
Makc aka Maximus (on other boards)
Makc вне форума  
Старый 17.05.2004, 02:47     # 5
azot
Newbie
 
Регистрация: 11.03.2003
Сообщения: 16

azot Путь к славе только начался
???

у меня всё работает (IE 6)

Код:
<html>
<head>
<script language="javascript">
function toclip(cmd) {
  if (window.clipboardData) {
    window.clipboardData.setData('Text', cmd);
  } else if (window.netscape) {
	netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');   
        var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
        if (!str)
          return;
        str.data = cmd;
        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');
        trans.setTransferData('text/unicode',str,cmd.length*2);
        var clipid = Components.interfaces.nsIClipboard;
        clip.setData(trans,null,clipid.kGlobalClipboard);
  }
        return false;
}
  -->
  </script>
</head>


<body>

<input type=button Onclick='javascript:toclip("Test Clipboard - check it")' value="Test Clipboard">


</body>
</html>
azot вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:38.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.