Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » 2 простых вопроса по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ответьте, пожалуйста, новичку:
 

  1. Как скопировать заранее заданный текст в клипбоард (чтобы при нажатии на ссылку, заданный текст копировался в буфер обмена).
    Если можно - фрагмент кода.
     
  2. Можно ли на локальной странице разместить такой код, который будет вставлять определенный текст в форму, расположенную на другой странице?
  3. ... а если адрес другой страницы заранее не известен, тогда можно?


Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 03:57 12-12-2002 | Исправлено: mozers, 03:49 13-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers
(1) работает только в эксплорере c 5+ (только Windows):
есть такой объект window.clipboardData
методы:

Цитата:
window.clipboardData Object Methods

Method  Returns  Description    
clearData([format]) Nothing  Removes data from the clipboard. If no format parameter is supplied, all data is cleared. Data formats can be one or more of the following strings: Text, URL, File, HTML, Image.    
getData(format) String  Retrieves data of the specified format from the clipboard. The format is one of the following strings: Text, URL, File, HTML, Image. The clipboard is not emptied when   you get the data, so that the data can be retrieved in several sequential operations.    
setData(format, data) Boolean  Stores string data in the clipboard. The format is one of the following strings: Text, URL, File, HTML, Image. For non-text data formats, the data must be a string that specifies the path or URL to the content. Returns true if the transfer to the clipboard is successful.

You cannot use the clipboardData object to transfer data between pages that originate from different domains or arrive via different protocols (http versus https).
то есть пишем что-то вроде

Код:
<a href="javascript:window.clipboardData.setData('Text','текст для занесения в буфер обмена');return false">ssylka</a>

Только лучше такое не использовать, не только от того, что употребление ограничено эксплорером, а оттого, что такое не любят антивирусы-- напр., мой Касперский завешивает эксплорер при попытке такое отработать.
 
(2) можно, если другая страница открыта скриптом с этой страницы или входит в один с ней frameset, если же нужно перейти на другую страницу и передать ей текст, который там будет-- придется передавать текст через url (например меняя конкретную ссылку через document.links-обращение к ней), а на конечной странице декодировать его-- жутко и длина текста ограничена.
 
(3) а это как?
 
 
Добавлено
кстати, уже постил тут-- баловался как-то с clipboard'ом
Код:
<script>
if (navigator.userAgent.indexOf('MSIE')>-1) {document.write('<br><br><br>especially for IE users-- your clipboard data is:<br><br>----begin data-----<pre>'+window.clipboardData.getData('Text')+'</pre>------end data-----<br><br> check your clipboard now!<br>');window.clipboardData.setData('Text','takaya tufta etot explorer');}
</script>

по ходу не только "Text" есть, но и "URL, File, HTML, Image"

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 02:05 14-12-2002 | Исправлено: Svarga, 01:16 15-12-2002
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga
Огромное СПАСИБО за столь подробный ответ!!!
Сохранил. Буду изучать.
Как въеду - обязательно отвечу.
 
Про 3-й вопрос:
Наверное надо Вам все таки посмотреть мои ПАНЕЛИ (не обязательно устанавливать MyIE2 - можно и без него, правда - хуже)
Идея очень проста - при нажатии на смайлик расположенный на ПАНЕЛИ в ЭТУ форму (или на другом каком форуме) должен копироваться соответствующий код или
Это пока так бы сделать - попростче. На будущее эту идею хотелось бы развить...
Вон на iXBT какая удобная форма для ответа, а ru-board приходится дорабатывать...
 

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 03:05 14-12-2002
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Большое СПАСИБО! Все получилось.
Правда первый пример не работает Я про это:

Код:
 
<a href="javascript:window.clipboardData.setData('Text','текст для занесения в буфер обмена');return false">ssylka</a>
 

 
Поэтому воспользовался нижней конструкцией. Преобразовал - не смейтесь - я не ничего в этом не понимаю. Вот что получилось:

Код:
 
<script>
function Copy(smilie)
{
if (navigator.userAgent.indexOf('MSIE')>-1) {;window.clipboardData.setData('Text',smilie);}  
}
 
function Addtags(tag)
{
if (navigator.userAgent.indexOf('MSIE')>-1) {;window.clipboardData.setData('Text','[' + tag + ']' + window.clipboardData.getData('Text') + '[/' + tag + ']');}  
}
</script>  
</head><body>
 
...
<a href="javascript:Copy('')"><img src="img/smilies/smile.gif"></a>
...
<a href="javascript:Addtags('b')">Полужирный</a>
 

Работает все отлично
Правда после первого же клика вся анимация на смайликах прекращается, но это не страшно.
Конечно туда-сюда через буфер текст копировать не слишком удобно, но раньше и такой возможности не было.
Тем более, если я правильно понял Ваш ответ на мой 2-3-й вопрос, ничего лучшего в данной ситуации (когда заранее неизвестен адрес страницы с формой, куда все эти смайлики и теги будут вставлятся) наука еще не изобрела.
 
Еще раз - СПАСИБО за помощь. Будем усовершенствовать свои панели на радость людям!
Не пробовали еще?
Неужели не понравилось?

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 18:22 14-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers

Цитата:
Правда первый пример не работает Я про это:
Код:
<a href="javascript:window.clipboardData.setData('Text','текст для занесения в буфер обмена');return false">ssylka</a>

странно...
я такое, к сожалению, проверить не могу (касперовский эксплорерный плагин не позволяет)-- может попробовать вынести window.clipboardData.setData('Text','текст для занесения в буфер обмена') в функцию?  
можно оформить ссылку еще в духе:
<a href="javascript:void
 (window.clipboardData.setData('Text','text to copy'))">ssylka</a>
или так:
<a href="javascript:void(0)" onClick="window.clipboardData.setData('Text','text to copy');return false">ssylka</a>
 
 
(все эти void'ы и return fals'ы для того, чтоб страница не перегружалась или не переходила к началу)
 
а тут
if (navigator.userAgent.indexOf('MSIE')>-1) {;window.clipboardData.setData('Text',smilie);}
";" не нужна
 
Добавлено
mozers,
попытался зайти на http://mybest.by.ru/ (оперой 6-й-- она у меня основной браузер)-- написало на странице текст:

Цитата:
<script language="JavaScript" type="text/javascript" src="http:/

на том все и закончилось


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 01:14 15-12-2002
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga

Цитата:
попытался зайти на http://mybest.by.ru/  (оперой 6-й

Да, мне уже говорили - видимо хваленая Опера не поддерживает элементарное перенаправление. (У меня по этому адресу - index.html следующего содержания:

Код:
 
<html><head><META HTTP-EQUIV="Refresh" content="0;URL=news/">
</head>
<body></body></html>
 

Ну, конечно, еще by.ru свое всплывающее окно пихает...
В общем, исключительно для владельцев Оперы -  
http://mybest.by.ru/news/
 
А можно еще вопрос? - не в тему - да простят мне модераторы:
Нигде не встречался такой код:
Имею несколько таблиц стилей (файлы CSS). Хочу нажатием на кнопку переключатся между ними (выбирать оформление по вкусу)?
 
Это очевидно последний мой пост - через 2 часа - на поезд

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 05:50 15-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers
переадресовку она, разумеется, поддерживает, только откуда такое --

Код:
<script language="JavaScript" type="text/javascript" src="http:/

тогда берется?
В этом коде
<html><head><META HTTP-EQUIV="Refresh" content="0;URL=news/">   </head>   <body></body></html>    
такого, вроде нет
 
Добавлено
по ходу-- пара замечаний по коду-- главной страницы:
 
--не лучше ли чем
bordercolorlight="#9999FF" bordercolordark="#9999FF"
просто сделать классы стилей для этого?
вроде .b{border:1px solid #9999FF}
 
--можно коды счетчиков вынести в отдельный/-ые js-файл/-ы, чтоб на всех страницах не писать одно и то же...
 
Добавлено
mozers
блин, сорри!
как-то не обратил внимание на
Цитата:
Идея очень проста - при нажатии на смайлик расположенный на ПАНЕЛИ в ЭТУ форму (или на другом каком форуме) должен копироваться соответствующий код

здесь все просто...
чуть позже напишу, или, если времени нет, посмотри как в готовом виде где-н реализовано.
Хотя если
Цитата:
Это очевидно последний мой пост - через 2 часа - на поезд
то, вероятно, у меня еще много времени для ответа

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 05:10 16-12-2002
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga

Цитата:
только откуда такое --
Код:<script language="JavaScript" type="text/javascript" src="http:/  
тогда берется?

Очевидно это - рекламное окно by.ru
Маленько пределал index.html (может заработает теперь с Оперой?)

Цитата:
--не лучше ли чем  
bordercolorlight="#9999FF" bordercolordark="#9999FF"  
просто сделать классы стилей для этого?  
вроде .b{border:1px solid #9999FF}

Давно собираюсь, но все как то... Ну теперь, если уж приличные люди тыкать стали,... (только solid - нельзя - кнопочки объем потеряют, поэтому придется описывать все 4 стороны).

Цитата:
--можно коды счетчиков вынести в отдельный/-ые js-файл/-ы, чтоб на всех страницах не писать одно и то же...

На by.ru разрешено SSI, так что у меня кроме
Код:
<!--#include virtual="../ssi/_stat.html"-->
ничего и нет

Цитата:
здесь все просто...  
чуть позже напишу

Жду ответа. Но боюсь, что вставлять автоматом код, сгенерированный на одной странице (панель) в форму на другой странице (этот пост) просто невозможно Так что придется все делать через буфер обмена... С радостью бы узнал, что я ошибаюсь

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 00:57 22-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers
 

Цитата:
Ну теперь, если уж приличные люди тыкать стали,.

издеваться изволите
 

Цитата:
(только solid - нельзя - кнопочки объем потеряют, поэтому придется описывать все 4 стороны).

можно ridge или groove попробовать (якобы должно давать эффект выпуклости или вдавленности-- на деле малость не то-- но смотрится )

Цитата:
На by.ru разрешено SSI, так что у меня кроме
Код:
<!--#include virtual="../ssi/_stat.html"-->
ничего и нет  
но ведь на каждой странице генрится все постоянно -- а так бы из кешей грузило.
по большому счету, какая разница
 
Код вставки картинок (сорри, что так долго не отвечал-- просто забыл назвние темы ):

Код:
<script>
function smile(s)
{
document.f.t.value+=' '+s
}
</script>
 
<a href="javascript:void smile(';)');"><img src="smile.jpg"></a><br>
<a href="javascript:void smile(';(');"><img src="sad.jpg"></a><br>
 
<form name=f>
<textarea name=t>тут текст.
</textarea>
</form>
 
просто замени имя формы и текстового поля на свои

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 03:19 22-12-2002 | Исправлено: Svarga, 03:25 22-12-2002
Ausw



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
вставлять автоматом код, сгенерированный на одной странице (панель) в форму на другой странице (этот пост) просто невозможно  Так что придется все делать через буфер обмена... С радостью бы узнал, что я ошибаюсь  
ну вообще то.... На форуме netadmin.ws/forum "русская клавиатура" подобным образом сделана. Открывается клава в новом окошке и печатая текст  - появляется в форме ответа.
 
что касается copy/paste - на translit.ru есть такая фишка.  


----------
Be High.

Всего записей: 7371 | Зарегистр. 12-07-2001 | Отправлено: 10:20 22-12-2002
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga

Цитата:
Код вставки картинок  
Господи, и ЭТО я так ждал
Ну неужели я так непонятно изъясняюсь
Цитата:
просто замени имя формы и текстового поля на свои  
Какие "свои"?
Эта форма, в которой я сейчас пишу это сообщение называется "postform" (textarea name=post) и находится она на странице http://forum.ru-board.com/topic.cgi?forum=31&topic=2081
Смайлики со скриптами находятся на странице G:\Program Files\MyIE2\Language\res\smilies.htm
Как, после нажатия на смайлик, код появится в этой форме? Как скрипт узнает что вставлять код необходимо именно в textarea на этой странице?
Значит надо задавать где то и адрес страницы, на которой будет находится форма для вставки?
Или есть какая то возможность вычислить адрес активной страницы? И название формы, расположенной на ней?
Вычислить и вставить в скрипт в качестве параметров. (Ну что бы он знал КУДА надо вставлять сгенерированные коды).
А в общем - ИМХО это ВООБЩЕ невозможно.
Поэтому придется все делать по другому:
- или копировать все коды в буфер обмена а потом втавлять Ctrl+V в эту форму
- или размещать форму непосредственно на одной странице со смайликами (т.е. на smilies.htm) Подготавливать текст на ней, а затем уже через буфер вставлять готовое сообщение в эту форму для отправки.
Можно, пожалуй, и отправлять прямо из формы на smilies.htm, только пока не придумал как быстро изменять параметр <form action= (не в один же этот топик придется сообщения отсылать).
Наверное 2й вариант будет более удобным.
В общем - СПАСИБО за советы! Будем думать
 
Добавлено
Ausw
СПАСИБО! Погляжу.
Но боюсь не подойдет. Там скрипт запускается с той страницы, на которой расположена форма, поэтому он и знает куда надо вставлять текст.
На странице ru-board никто кнопку для запуска моей панели делать не будет.

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 22:37 22-12-2002
Ausw



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Попробуй..
 
хотя как скрипт узнает в какое окно ему сувать буковки, если скажем, 2 окна открыто...
 
так что помойму нет варианта, хотя есть проги-формозаполнители, занчит какая то особенность есть же

----------
Be High.

Всего записей: 7371 | Зарегистр. 12-07-2001 | Отправлено: 22:51 22-12-2002 | Исправлено: Ausw, 23:03 22-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ausw

Цитата:
хотя как скрипт узнает в какое окно ему сувать буковки, если скажем, 2 окна открыто...

для этого окнам при открытии имена даются: window.open('winName','file.html','properties')-- через них к разным окнам обращаться можно, а если из нового окна обращаться к основному-- то все просто:
opener.document.formName.elementName.value+='что вставить'
 
mozers

Цитата:
Какие "свои"?

насколько я понял, тебе все это нужно для твоей гостевой -- http://book.by.ru/cgi-bin/book.cgi?book=sambook или нет?
%)  
я никогда не сталкивался с гостевыми от by.ru-- они разрешают добавлять свой код в страницу создания нового сообщения (у тебя это http://book.by.ru/cgi-bin/book.cgi?book=sambook&add=1 , если я правильно зашел )? форма тым безымянная, а textarea name="text", т.е. обращение к значению textarea будет document.forms[0].text.value=....
 
блин-- пытался уже ответ написать-- ничего там не получится-- там весь html из сообщения вырезается, а единственным выходом там было бы вставлять ссылки на конкретные картинки-смайлики в духе:

Код:
<script>
function smile(s)
{
document.forms[0].text.value+=' '+'<img src=http://server.com/smiles/'+s+'>'
}
</script>
 
<a href="javascript:void smile('smile.jpg');"><img src="http://server.com/smiles/smile.jpg"></a><br>
<a href="javascript:void smile('sad.jpg');"><img src="http://server.com/smiles/sad.jpg"></a><br>
 
<form>
<textarea name=text>тут текст.
</textarea>
</form>
т.е. при нажатии на картинку на странице вставлялся бы код типа <img src=http://server.com/smiles/smile.jpg>
 
не судьба, вообщем ;(
 
Добавлено
mozers,
перечитал твой первый пост:

Цитата:
Можно ли на локальной странице разместить такой код, который будет вставлять определенный текст в форму, расположенную на другой странице?
... а если адрес другой страницы заранее не известен, тогда можно?

так и не ответил на это %)
Наконец-то дошло о чем речь.
Вообщем, чтоб именно такое сделать, создаем фреймсет: в одном фрейме-- страница, с которой вставлять, в другом-- страница с формой, в которую нужно вставлять текст, потом организовуем вставку через такое обращение:
parent.frameName.document.formName.textAreaName.value+='чего вставить'.
Не в адресе страницы дело (его не нужно знать скрипту)--  большинство браузеров (если не все) запрещают обращение скрипта к формам, находящимся на странице с другого домена. Не только, кстати, к формам, но и ко всем объектам страницы.

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 00:58 23-12-2002
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga

Цитата:
для этого окнам при открытии имена даются
Увы, окно назначения уже имеет имя.
Цитата:
насколько я понял, тебе все это нужно для твоей гостевой  
Конечно - НЕТ. (Далась мне эта госевая) Для Панели ресурсов MyIE
Цитата:
Наконец-то дошло о чем речь.
Ну слава Богу, а то я думал, что мы вообще друг-друга никогда не поймем.

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 07:03 23-12-2002
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mozers

Цитата:
Конечно - НЕТ. (Далась мне эта госевая) Для Панели ресурсов MyIE

А поточнее и поподробнее можно?

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 07:42 23-12-2002
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svarga
Цитата:
А поточнее и поподробнее можно?
Сообщи на mozers(собака)mail.ru свое мыло - я вышлю свои панели.
Чтобы на 100% представлять как они работают, лучше поставить MyIE2 (~800kB в реестре, кроме Uninstall никаких записей не оставляет) и в нем нажать на кнопку "Ресурсы". Можно, конечно MyIE2 и не ставить, ("Ресурсы" - это обычные HTML, только открывающиеся в отдельной боковой панели - как History в IE) но...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 11:24 23-12-2002
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » 2 простых вопроса по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru