Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Можно ли получить через js доступ к скопированному тексту (https://javascript.ru/forum/events/31069-mozhno-li-poluchit-cherez-js-dostup-k-skopirovannomu-tekstu.html)

Jeremen 25.08.2012 19:05

Можно ли получить через js доступ к скопированному тексту
 
Можно ли получить через js доступ к скопированному тексту, если да то как?

cyber 25.08.2012 19:08

к тому что в буфере? только через хтмл 5 (если я не ошибаюсь)

Jeremen 25.08.2012 19:10

cyber, ну припустим при событии copy можно же как-то доступ к тому что мы скопировали получить?

Deff 25.08.2012 19:28

Jeremen,
Ток в связке через флешь Возможно можно в ИЕ напрямую(но он спросит разрешение у пользователя)

lord2kim 25.08.2012 19:29

Jeremen, подобные фишки с доступом к буферу обмена есть в IE, FF, возможно в GC...обычно подобное проворачивается с помощью Flash
из HTML5 вроде исключили данную возможность (но не уверен)

Jeremen 25.08.2012 19:32

то есть на чистом js нельзя написать скрипт который бы при копировании текста с страницы со скриптов добавлял в скопированный текст ссылки откуда скопирован текст?

Deff 25.08.2012 19:36

Цитата:

Сообщение от Jeremen
то есть на чистом js нельзя написать скрипт который бы при копировании текста с страницы со скриптов добавлял в скопированный текст ссылки откуда скопирован текст?

Кроссбраузерно - Нет

lord2kim 25.08.2012 19:36

Jeremen, редактировать буфер обмена вроде вообще нельзя...

Deff 25.08.2012 19:41

lord2kim,
Можно прочитать буфер и заменить целиком (через флешь + скрипт

Jeremen 25.08.2012 19:44

Под Flash имеется ввиду action script? :)

lord2kim 25.08.2012 19:48

Jeremen, да, но в принципе уже есть готовые реализации в инете...
Deff, это понятно...имел ввиду, что нельзя отредактировать то, что уже там есть...только перезаписать

cyber 25.08.2012 20:10

Цитата:

Сообщение от Jeremen (Сообщение 200455)
cyber, ну припустим при событии copy можно же как-то доступ к тому что мы скопировали получить?

событе сopy можно самому с эмулировать
<!DOCTYPE HTML>
<html>
  <head> 
  <script>
  function getSelectionText() {
  var txt = '';
    if (txt = window.getSelection) {// Не IE, используем метод getSelection
    txt = window.getSelection().toString();
  } else { // IE, используем объект selection
    txt = document.selection.createRange().text;
  }
  return txt;
}
    </script> 
  </head>
  <body>
    <input id='in' value='text' type='text'><div ></div>
    <script>
var inp = document.getElementById('in');

      inp.onfocus = function () {
      
      var ctrl;
        this.onkeydown= function (e) {
        
        
           if (e.ctrlKey) ctrl = true;
          
          
          if (!ctrl || e.keyCode != 67) return;
          
          
          this.nextElementSibling.innerHTML ='copy '+ getSelectionText();
          
        }
      
          this.onkeyup = function (e) {
          
            if (e.ctrlKey) ctrl = false;
          }   
      
      }

    </script>

  </body>
</html>

cyber 25.08.2012 20:26

и вообще разработчикам нужно руки отрывать за возможность доступа к буферу через флеш, и не дай бог в хтмл 5 добавят:nono:

Deff 25.08.2012 20:35

cyber,
Не наю - А как бы Вы копировали коды отсель , из топика ?
Имхо - запись в буфер - нужна... На счет копи из буфера пока не возникало актуальной задачи (хотя может в играх и оформлении текстов в cаnvas -редакторах может и актуально, по крайней мере в ФШ весьма неудобно набивать скопированные тексты - руками, особенно если они на иностранном, китайском, к примеру

cyber 25.08.2012 20:43

Цитата:

Сообщение от Deff (Сообщение 200472)
cyber,
Не наю - А как бы Вы копировали коды отсель , из топика ?
Имхо - запись в буфер - нужна... На счет копи из буфера пока не возникало актуальной задачи (хотя может в играх и оформлении текстов в cаnvas -редакторах может и актуально, по крайней мере в ФШ весьма неудобно набивать скопированные тексты - руками, особенно если они на иностранном, китайском, к примеру

опять на вы?
ты опредились то на вы или на ты=)
у меня флеша нет вообще так что я копирую через новое окно(кнопка справа от кнопки копировать в буфер):victory:

Aetae 25.08.2012 20:51

Цитата:

Сообщение от Jeremen (Сообщение 200460)
то есть на чистом js нельзя написать скрипт который бы при копировании текста с страницы со скриптов добавлял в скопированный текст ссылки откуда скопирован текст?

Это сделать можно, но не через буфер. Я уже видел на какой-то странице реализацию.
Суть в том что при выделении в конец выделения добавляется невидимый блок в котором содержится нужный копирайт.

Пример: для FF, выделите и скопируйте текст
<!DOCTYPE HTML>
<html>
<head>
	<script type="text/javascript">
	var copy = document.createElement('div');
	copy.innerHTML = '&copy; developer.mozilla.org';
	copy.style.cssText = 'position:absolute;width:0;height:0;top:-999px;left:-999px;z-index:-999;';
	window.onmouseup = function(){
		var sel = window.getSelection();
		if(sel.toString()){
			var range = sel.getRangeAt(sel.rangeCount-1).cloneRange();
			range.collapse(false);
			range.insertNode(copy);
			range.selectNode(copy);
			sel.addRange(range);
		}else{
			document.body.appendChild(copy);
		}
	}
	</script>
</head>
<body>
Selection is the class of the object returned by window.getSelection() and other methods. It represents the text selection in the greater page, possibly spanning multiple elements, when the user drags over static text and other parts of the page. For information about text selection in an individual text editing element, see Input, TextArea and document.activeElement which typically return the parent object returned from window.getSelection().

</body>
</html>

Jeremen 25.08.2012 20:51

cyber, а чем плохо доступ к буферу?

dmitriymar 25.08.2012 20:57

да уж, ничего не поменялось...:-/
http://stackoverflow.com/questions/8...th-firefox-api
https://developer.mozilla.org/en-US/..._the_Clipboard
и не только фф..

cyber 25.08.2012 20:58

Цитата:

Сообщение от Jeremen (Сообщение 200481)
cyber, а чем плохо доступ к буферу?

если есть доступ буферу:
-с буфера можно свиснуть инфу
- в буфер можно добавить инфу

cyber 25.08.2012 21:02

а флеш я ненавижу за то что мне на мой андроид смарт какой то [censored] закинул вирус через флеш, и свиснул 20$ с счета (все деньги что были на счету), после этого я не использую флеш.
А насчет хмтл 5 вроде есть браузер на движке хрома который запрещает доступ к буферу..

dmitriymar 25.08.2012 21:08

Цитата:

Сообщение от cyber
разработчикам нужно руки отрывать за возможность доступа к буферу через флеш, и не дай бог в хтмл 5 добавят

читай ссылки выше. 2 года назад уже добавили

cyber 25.08.2012 21:10

Цитата:

Сообщение от dmitriymar (Сообщение 200492)
читай ссылки выше. 2 года назад уже добавили

читал ,пора менять браузер:blink:

dmitriymar 25.08.2012 21:14

Цитата:

Сообщение от cyber
читал ,пора менять браузер

я ж сказал -2 года назад добавили. соответственно в тех в каких ещё нет( может и есть такие ещё)- скоро добавят

cyber 25.08.2012 21:19

выбирайте
http://itc.ua/articles/ne-hromom-edi...vizhke-webkit/
вроде та ссылка, если там там есть браузер на движке хрома с повышенной защитой и доступ в буфер закрыт

Deff 25.08.2012 21:43

Цитата:

Сообщение от Aetae
Это сделать можно, но не через буфер. Я уже видел на какой-то странице реализацию.
Суть в том что при выделении в конец выделения добавляется невидимый блок в котором содержится нужный копирайт.

Aetae,
В Опере - не работает - но + за идею

Aetae 25.08.2012 21:48

Цитата:

Сообщение от Deff (Сообщение 200502)
Aetae,
В Опере - не работает - но + за идею

Написано же: пример для ff. В работе с selection слишком много кроссбраузерных заморочек, чтоб мне было не лень делать полноценный пример. Но это возможно, инфа 100%.)

Deff 25.08.2012 21:53

Aetae,
Да у мну есть кросс - селектион - Важно, что Вы указали иную возможность от буфера, а что не работало - прост ин-фа по-ходу

Romeo 25.08.2012 22:08

http://dev.1c-bitrix.ru/community/we...0522/blog/565/
отсюда можно взять как получить выделение.
ну и хоткеи другие сделать, и всех делов)


Часовой пояс GMT +3, время: 18:25.