Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Скрипт копирования в буфер обмена [РЕШЕНО]  (Прочитано 7525 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Здраствуйте.
В поисках скрипта который копирует нужную инфу в буффер обмена наткнулся на следующий - http://cssing.org.ua/examples/clipboard/


В нем следующие строки:
(Нажмите, чтобы показать/скрыть)

Но проблема в следующем - если в флеш-скрипт попадает ссылка по типу films.com/download2.php?link=20/movies/A_nanny_for_christmas/&file=A_nanny_for_christmas.avi тогда в буфер попадает только films.com/download2.php?link=20/movies/A_nanny_for_christmas/, тоесть все что до знака &

Какие есть идеи на счет этого бэда? Буду благодарен за подсказку...

Пользователь решил продолжить мысль 10 Января 2011, 22:40:48:
пробовал разные варианты... как отделать ссылку от исполнимой команды? :o
« Последнее редактирование: 18 Января 2011, 10:50:38 от TrEK »

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт копирования в буфер обмена
« Ответ #1 : 13 Января 2011, 15:44:13 »
Возможно задать какие-нибудь переменные..  :idiot2:

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Скрипт копирования в буфер обмена
« Ответ #2 : 13 Января 2011, 16:54:50 »
Попробуйте одинарные прямые кавычки вместо двойных для начала.

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Скрипт копирования в буфер обмена
« Ответ #3 : 13 Января 2011, 17:14:14 »
нужно ескапать или енкодить
Я конечно далек от мысли...(с)

Axa-Ru

  • Гость
Re: Скрипт копирования в буфер обмена
« Ответ #4 : 13 Января 2011, 17:26:25 »
...Буду благодарен за подсказку...
Этта.... скока?

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Скрипт копирования в буфер обмена
« Ответ #5 : 13 Января 2011, 18:39:24 »
с ембедом валидатор не пройдет, нужно хукать
http://www.n-d.ru/images/clipboard.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
//<![CDATA[
        function clip() {
                var url="films.com/download2.php?link=20/movies/A_nanny_for_christmas/&file=A_nanny_for_christmas.avi";
                url=encodeURIComponent(url);
                var object=document.getElementById("object");
                var embed=object.getElementsByTagName("embed").item(0);
                var param=object.getElementsByTagName("param").item(0);
if (param) {
param.value=param.value.replace(/\*URL\*/i,url);
}
    if (embed) embed.setAttribute("src",embed.src.replace(/\*URL\*/i,url));
try {
object.SetVariable("clipboard",url);
return;
} catch(e) {
object.innerHTML=object.innerHTML.replace(/\*URL\*/i,url);
}
        }
//]]>
</script>
</head>
<body onload="clip();">
<p>Начало</p>
<div style="border: 1px solid; width: 200px; height: 100px">
<object id="object" classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" style="width: 198px; height: 98px">
<param name="movie" value="clipboard.swf?normal=0.sh.png&amp;pressed=0.sh.png&amp;hover=0.sh.png&amp;clipboard=*URL*" />
<embed src="clipboard.swf?normal=0.sh.png&amp;pressed=0.sh.png&amp;hover=0.sh.png&amp;clipboard=*URL*" quality="high" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" style="width: 198px; height: 98px" />
</object>
</div>
</body>
</html>
« Последнее редактирование: 14 Января 2011, 10:17:39 от smaharbA »
Я конечно далек от мысли...(с)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт копирования в буфер обмена
« Ответ #6 : 14 Января 2011, 11:22:06 »
Попробуйте одинарные прямые кавычки вместо двойных для начала.

да пробовал уже всякие варианты

Пользователь решил продолжить мысль 14 Января 2011, 14:01:10:
smaharbA, я заступорился...
Теперь теряюсь как Ваш код вставить в свой. :idiot2:

Если есть уже пшп-страничка, тогда в нее можно только скопировать:


(Нажмите, чтобы показать/скрыть)

И обязательно ли это
(Нажмите, чтобы показать/скрыть)
вставлять в поле тега <head> ?

И что делать если в теге <body> нужной странички надо прописать onload="clip();" , а там уже есть строчка onload="window.clearTimeout(timer);timer=0;document.getElementById('widget_div').style.display='block';"
(их реально совместить?)






« Последнее редактирование: 14 Января 2011, 14:01:51 от TrEK »

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Скрипт копирования в буфер обмена
« Ответ #7 : 14 Января 2011, 15:29:12 »
clip() добавить либо в начало onload="clip();...." либо в конец onload="....;clip();"
а тело скрипта без разницы куда, лишь бы перед этим <object... но лучче и перед <body

и наверное надо все это "безобразие" причасать, немного измененный этот клипбоард есть по ссылке

Пользователь решил продолжить мысль 14 Января 2011, 15:32:37:
а вообще идея использовать для буфера флешь как то пахнет не очень, лучче сделать тройной вариант, для ИЕ, для гекты и если ни то ни другое не сработало, то тогда уже флешь
« Последнее редактирование: 14 Января 2011, 15:32:37 от smaharbA »
Я конечно далек от мысли...(с)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт копирования в буфер обмена
« Ответ #8 : 14 Января 2011, 16:17:08 »
А чем флеш плох?.. я просто в сети не нашел более подходящих вариантов, но вот только проблемка возникла с амперсандой...

п.с. Что такое гекта? :o
п.п.с.  Сейчас попробую внедрить это все. (странно, но у меня на сайте стает неактивная флеш-кнопочка, та что у Вас в тесте копирует)
« Последнее редактирование: 14 Января 2011, 17:35:25 от TrEK »

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Скрипт копирования в буфер обмена
« Ответ #9 : 14 Января 2011, 22:11:11 »
Изменил на более "универсальный" и интерактивный
(проверено на ие, фф, опере, хроме и сафари)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Буфер обмена
</title>
<script type="text/javascript">
//<![CDATA[
var cliptimeout=0;
var browser;
var once;
function fbrowser() {
var map={outerHTML: "<map /''name=\"firefox\" /\"\"name=\"sleipnir_gecko\" \"vname=\"safari\" \"\"name=\"konqueror\" /\vname=\"ie\" name=\"opera\" name=\"lynx\"></map>"
}
var browser=document.getElementById("browser");
browser.innerHTML=map.outerHTML;
ret=browser.firstChild.getAttribute("name");
if (ret=="konqueror") return "konqueror";
if (ret=="opera" && browser.innerHTML.replace(/[\/ \v\"]/g,"")==map.outerHTML.replace(/[\/ \v\"]/g,"")) return "opera";
var vname=browser.firstChild.getAttribute("vname");
if (ret=="opera") return vname!="ie" ? "chrome" : "ie";
if (ret=="firefox" && browser.firstChild.getAttribute("\vname")) return "firefox";
if (vname=="safari") return "safari";
return ret;
}
function start(browser) {
var start=document.getElementById("start");
start.firstChild.innerHTML=start.firstChild.innerHTML+" в обозревателе: "+browser;
}
function clip() {
var text=document.getElementById("text");
                var url=text.value;
                url=encodeURIComponent(url);
text.setAttribute("value",text.value);
var re = {re: /(\&amp;|&)clipboard=.*/i, src: "&clipboard="+url};
var clipboard=document.getElementById("clipboard");
                var object=document.getElementById("object" + (browser=="ie" || browser=="safari"));
                var embed=document.getElementById("embed");
    if (embed) {
embed.setAttribute("src",embed.src.replace(re.re,re.src));
embed.setAttribute("flashvars","clipboard="+url);
}
            var param=object.getElementsByTagName("param").item(0);
if (param) param.value=param.value.replace(re.re,re.src);
            var param=object.getElementsByTagName("param").item(1);
if (param) param.value="clipboard="+url;
    if (browser=="undefined") {
// object.setAttribute("data",object.data.replace(re.re,re.src));
}
try {
object.SetVariable("clipboard",decodeURIComponent(url));
} catch(e) {
// Это для нетшкафа и прочих, нужно проверять на всех, у меня только ИЕ,фф и хром
// clipboard.innerHTML=clipboard.innerHTML.replace(re.re,re.src);
// alert(clipboard.innerHTML);
}
        }
//]]>
</script>
</head>
<body onload="start(browser=fbrowser());clip();">
<div id="browser" style="display: block"></div>
<div id="start"><p>Начало</p></div>
<p>
<input type="text" id="text" size="200"
value="films.com/download2.php?link=20/movies/A_nanny_for_christmas/&amp;file=A_nanny_for_christmas.avi" />
</p>
<div id="clipboard" style="border: 1px solid; width: 94px; height: 22px;"
onmouseover="if (cliptimeout==0) cliptimeout=window.setTimeout(function(){clip()},100);"
onmouseout="window.clearTimeout(cliptimeout);cliptimeout=0;">
<object id="objecttrue" classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" style="width: 94px; height: 22px"
type="application/x-shockwave-flash">
<param name="movie" value="clipboard.swf?normal=0.sh.png&amp;pressed=0.sh.png&amp;hover=0.sh.png&amp;clipboard=" />
<!--[if !IE]>-->
<object id="objectfalse"  style="width: 94px; height: 22px"
data="clipboard.swf?normal=0.sh.png&amp;pressed=0.sh.png&amp;hover=0.sh.png&amp;clipboard="
type="application/x-shockwave-flash">
<param name="movie" value="clipboard.swf?normal=0.sh.png&amp;pressed=0.sh.png&amp;hover=0.sh.png&amp;clipboard=" />
<param name="flashvars" value="clipboard=" />
<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" />
<embed id="embed" src="clipboard.swf?normal=0.sh.png&amp;pressed=0.sh.png&amp;hover=0.sh.png&amp;clipboard=" quality="high"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"
flashvars="clipboard=" style="width: 94px; height: 22px" />
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>
« Последнее редактирование: 15 Января 2011, 13:36:42 от smaharbA »
Я конечно далек от мысли...(с)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт копирования в буфер обмена
« Ответ #10 : 15 Января 2011, 15:05:11 »
 :-\

Что-то не получается у меня... Флешовую кнопку скопировать именно под этот скрипт надо делать.. или подойлет та кнопка что Вы сделалаи.. или та что в примере скрипта на сайте http://cssing.org.ua/examples/clipboard/ ?

У меня просто кнопка не отображается... и при наведении мышкой на нее курсор не изменяет свой вид.

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Скрипт копирования в буфер обмена
« Ответ #11 : 16 Января 2011, 14:35:03 »
этой флешке обязательно нужны картинки, без них она не работает почему то
Я конечно далек от мысли...(с)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт копирования в буфер обмена
« Ответ #12 : 16 Января 2011, 16:02:34 »
этой флешке обязательно нужны картинки, без них она не работает почему то

А названия Ваших картинок я так понимаю 0.sh.png ?
Если я свою создам с таким же названием - у меня работать будет?

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Скрипт копирования в буфер обмена
« Ответ #13 : 16 Января 2011, 16:42:41 »
да
у меня это не картинка а шеловский скрипт
лучче переделать мою писанину под свою задачу, если надо копировать статичный текст и он задается скриптом пыхыпы - то найти в пыхыпы функцию аналогичную encodeURIComponent
Я конечно далек от мысли...(с)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Скрипт копирования в буфер обмена
« Ответ #14 : 16 Января 2011, 19:34:21 »
Запутался и не могу никак понять...

Заменил в коде 0.sh.png на a1.png , a2.png, a3.png соответственно в строке clipboard.swf?normal=a1.png&amp;pressed=a2.png&amp;hover=a3.png&amp;clipboard=

И теперь кнопка отображается на тестовой страничке, но не копирует ничего.. так как после = ничего не указано...  :'(

Никак не понять , что же надо еще изменить?

Подскажите, чтоб без определения браузера...  просто была кнопка , ну и первоначальный код :

src="clipboard.swf?normal=a1.png&amp;pressed=a2.png&amp;hover=a3.png&amp;clipboard='.$SSULKA.'"

где $SSULKA=films.com/prev.php?link=' . $link . '&file=' . $file . ' , где собственно после films.com/prev.php?link=' . $link . ' уже не принимается, так как препятствием становится амперсанда.

 $link = 20/movies/папка_фильма/
 $file - Название_фильма.avi

Пробовал перековырять Ваш код, ничего из этого не вышло.  Сможете уделить мне еще немного внимания?
« Последнее редактирование: 16 Января 2011, 19:48:39 от TrEK »

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.