Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   копирование в Буфер при клике на картинку (https://javascript.ru/forum/misc/1441-kopirovanie-v-bufer-pri-klike-na-kartinku.html)

Павел 18.07.2008 10:09

копирование в Буфер при клике на картинку
 
Доброго времени суток! только начал изучать JS, поэтому прошу не кидать камнями за ,возможно, простой вопрос:

Есть html страничка с множеством картинок. нужно при клике на одной из них записать выражение в буфер обмена, соответсвенно, разные выражения для разных картинок.
Сразу скажу - нужно, что бы работало под мозиллой....
http://webchicanery.com/code/clipbjavascript.zip вот скрипт сценария, который возможно можно доработать.

Павел 19.07.2008 18:12

Немного не ясно выразился. По событию онклик на картинке должен срабатывать скрипт, который запишет в буфер обмена комментарий к картинке (alt.) такое вообще реально сделать?

Андрей Параничев 19.07.2008 19:59

Это реально сделать, но не так просто, как может показаться.
Вот статейка на эту тему. Можете попробовать использовать код из этой статьи:
function copyToClipboard(content) {
	if (window.clipboardData && window.clipboardData.setData) {
		window.clipboardData.setData("Text", content);
		return true;
	}
	else {
		try { 
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
		} 
		catch (e) { 
			return false;
		}
		
		var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService(); 
		if (clipboard) { 
			clipboard = clipboard.QueryInterface(Components.interfaces.nsIClipboard); 
		} 
		
		var transferable = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(); 
		if (transferable) { 
			transferable = transferable.QueryInterface(Components.interfaces.nsITransferable); 
		}
		
		if (clipboard && transferable) {
			var textObj = new Object(); 
			var textObj = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); 
			if (textObj) { 
				textObj.data = content; 
				transferable.setTransferData("text/unicode", textObj, content.length*2); 
				var clipid=Components.interfaces.nsIClipboard; 
				clipboard.setData(transferable,null,clipid.kGlobalClipboard); 
				
				return true;
			} 
		}
		
		return false;
	}
}

Вам останется только повесить, либо через DOM, либо прямо в теге, выполнение этой функции с параметром соответствующего alt свойства. Например вот так:
<img src="..." alt="sometext" onClick="copyToClipboard(this.alt)" />

Kiev1 16.09.2008 04:21

в фоксе не работает
 
в фоксе не работает

glutton 13.07.2009 16:07

Здравствуйте!
Кто-нибудь может подсказать, почему не работает такой код:

<SCRIPT TYPE="text/javascript">
<!--
function ClipBoard(text)
{
	text.createTextRange().execCommand("Copy");
}
//-->
</script>

<a title="Скопировать текст в буфер обмена"
  href="javascript:ClipBoard('Этот текст надо скопировать')">Этот текст надо скопировать</a>

В IE при клике ничего не происходит, и в строке состояния броузера сообщение об ошибке.

B~Vladi 13.07.2009 16:13

В ИЕ для копирования чего либо нужно использовать объект
событие.dataTransfer.setData(формат, данные)

Помещает в буфер сохранения строку данные в заданном формате, который может иметь значение "Text" или "URL". Возвращает true в случае успеха и false в противном случае.

Насколько мне извесно, другие браузеры не позволяют такое делать.

x-yuri 14.07.2009 20:49

http://javascript.ru/unsorted/why_href_js_is_bad

Цитата:

Сообщение от glutton
и в строке состояния броузера сообщение об ошибке

а ошибка-то какая? про какую строчку?

Corsair11 14.07.2013 00:51

Цитата:

В IE при клике ничего не происходит, и в строке состояния броузера сообщение об ошибке.

Брось ты это все, Glutton, Оптимизировать свой сайт под IE - Лишняя морока! Нормальные люди пользуются Оперой и лисичкой (файрбуг - тоже ничего :))

Например, мой сайт (https://corsair.asmer.com.ua) В ИЕ Вообще не будет работать (Я не прикладивал никаких усилий для оптимизации своего сайта под ИЕ), и меня это не сильно волнует


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