Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция копирования в буфер обмена

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
RickMan
Отправлено: 25 Июня, 2013 - 16:12:16
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Здравстуйте, помогите понять, что в функции не так, и как её можно исправить. Если в кратце, то есть текст на странице, кликнув на него правой кнопкой, открывается меню, в нем есть пару пунктов и 1 из них, это кнопка copy, при нажатии на которую текст из span'а копируется в буфер обмена. Копирование не проходит и выдает ошибку:
Цитата:

Uncaught TypeError: Object #<HTMLTextAreaElement> has no method 'createTextRange'


Тест html кнопки:
CODE (html):
скопировать код в буфер обмена
  1. <span oncontextmenu="return OpenMenu(event,10)">текст</span>


JS:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function OpenMenu(evt){
  3.     evt = evt || window.event;
  4.     evt.cancelBubble = true;
  5.     // Показываем собственное контекстное меню
  6.     var menu = document.getElementById("oMenu");
  7.     var html = "";
  8.         login=(evt.target || evt.srcElement).innerHTML;
  9.        
  10.         window.event.returnValue=false;
  11.         var i1, i2;
  12.         if ((i1 = login.indexOf('['))>=0 && (i2 = login.indexOf(']'))>0) login=login.substring(i1+1, i2);
  13.  
  14.         var login2 = login;
  15.        
  16.         html  = '<a href="javascript:void(0)" class="menuItem" onclick="window.open(\'inf.php\')"; cMenu();">INFO</a>'+
  17.                 '<TEXTAREA ID="holdtext" STYLE="display:none;"></TEXTAREA><A class=menuItem HREF="javascript:ClipBoard(\''+login+'\');cMenu()">COPY</A>';
  18.  
  19.     // Если есть что показать - показываем
  20.     if (html){
  21.         menu.innerHTML = html;
  22.         menu.style.top = defPosition(evt).y + "px";
  23.         menu.style.left = defPosition(evt).x + "px";
  24.         menu.style.display = "";
  25.     }
  26.  
  27.     // Блокируем всплывание стандартного браузерного меню
  28.     return false;
  29. }
  30.  
  31. function ClipBoard(text){
  32.         holdtext.innerText = text;
  33.         var Copied = holdtext.createTextRange();
  34.         Copied.execCommand("RemoveFormat");
  35.         Copied.execCommand("Copy");
  36. }
  37.  


Заранее спасибо.

P.S. делается все под хромом...

(Отредактировано автором: 25 Июня, 2013 - 16:15:38)

 
 Top
esterio
Отправлено: 25 Июня, 2013 - 16:32:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




насколько мне извесно то данный способ должен работать в ИЕ. И еще нету крозбраузерного способа скопировать текст в буфер. Для етого используют флеш.

П.С. подправьте если я не прав
 
 Top
RickMan
Отправлено: 25 Июня, 2013 - 16:33:38
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




esterio пишет:
насколько мне извесно то данный способ должен работать в ИЕ. И еще нету крозбраузерного способа скопировать текст в буфер. Для етого используют флеш.

П.С. подправьте если я не прав


Да, createTextRange работает только под ИЕ, но мне не надо кросбраузерное, мне надо сделать это действие под Хром. И желательно без вмешательства флеша, думаю это реально.
 
 Top
IllusionMH
Отправлено: 25 Июня, 2013 - 16:40:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




RickMan, в данный момент кросбраузерно и без флеша - только способом с этого сайта(кнопка Id в правом верхнем углу сообщения).
(Добавление)
RickMan пишет:
думаю это реально

думать - одно, а реальные факты - другое: Clipboard API and events тольков WD
 
 Top
RickMan
Отправлено: 25 Июня, 2013 - 16:46:01
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Пробовал еще window.clipboardData, но Chrome не дает доступа к нему... prompt не походит, это уж сильно альтернатива... Есть еще варианты для хроме? Может через JQuery?
 
 Top
armancho7777777 Супермодератор
Отправлено: 25 Июня, 2013 - 16:56:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




 
 Top
esterio
Отправлено: 25 Июня, 2013 - 17:04:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





RickMan пишет:
Да, createTextRange работает только под ИЕ, но мне не надо кросбраузерное, мне надо сделать это действие под Хром. И желательно без вмешательства флеша, думаю это реально.

Не ну реально Вы знаете что свойство работает только под ИЕ и хочете заставить его работать в хроме. Я В ШОКЕ.
 
 Top
RickMan
Отправлено: 25 Июня, 2013 - 22:43:32
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




esterio пишет:

RickMan пишет:
Да, createTextRange работает только под ИЕ, но мне не надо кросбраузерное, мне надо сделать это действие под Хром. И желательно без вмешательства флеша, думаю это реально.

Не ну реально Вы знаете что свойство работает только под ИЕ и хочете заставить его работать в хроме. Я В ШОКЕ.


Я где-то указал, что мне надо, чтобы именно это свойство заработало в ИЕ? Я сказал, что мне нужен тот же эффект, но другими путями! Просьба не флудить и писать по существу.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB