Kopiowanie do schowka zawartości TextArea

Odpowiedz Nowy wątek
2015-01-30 22:50
0

Witam chciałbym aby po naciśnięciu przycisku dodać do schowka zawartość pola textarea. Z tego co czytałem to problemu nie ma przy przeglądarce internet explorer jeśli natomiast chcemy skorzystać z większej liczby bardziej popularnych przeglądarek jak firefox, opera, chrome to należy użyć Flasha lub JS + jquery. Próbowałem użyć do tego gotowego skryptu zeroclipboard jednak nie udało mi się go zaimplementować tak by działał. Użyłem więc lmcbutton jednak mam problem z tym by pobierał on tekst z pola textarea. Jeśli przypiszę na sztywno jakiś ciąg znaków do zmiennej $abcd to mi ją skopiuje do schowka jeśli jednak bym chciał ją pobrać z textarea to przycisk się nie pojawia. Proszę o pomoc, lub ewentualnie jakieś inne rozwiązanie które mógłbym wykorzystać by skopiować zawartość textarea do schowka za pomocą przycisku. Dodam że jestem początkującym, z góry dziękuję za każdą odpowiedź i podpowiedź.

function isNotEmpty(str) {
 return !((str == undefined) || (str == ''));
}

function ShowLMCButton(cliptext, capt, js, furl)
{
 var params = 'txt=' + encodeURIComponent(cliptext); 
 if (!isNotEmpty(furl)) { furl = "lmcbutton.swf"; }
 if (isNotEmpty(capt)) { params += '&capt=' + capt; }
 if (isNotEmpty(js)) { params += '&js=' + js; }

document.write('<object width="40" height="20">');
document.write(' <param name="movie" value="' + furl + '">');
document.write(' <PARAM NAME=FlashVars VALUE="' + params + '">');
document.write(' <embed src="' + furl + '" flashvars="' + params + '"  width="40" height="20"></embed>');
document.write('</object>');

//alert('file: ' + furl + ' Params: ' + params); // debug
}

a tu kod html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<body>

<textarea id="input" name="pole" style="width:480px;height:250px;" _vkenabled="true"></textarea>
<table width="300" border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td><input name="textfield" id="abc" type="text" value="Wprowadz" size="50" /></td>
    <td>

<script type="text/javascript">if(isset($_POST['pole'])){ $notify = $_POST['pole']; $abcd=$_POST['pole']; ShowLMCButton($abcd); 
    }   
</script>
</td>
  </tr>

</body></html>

Pozostało 580 znaków

2015-02-02 11:30

ojj a wiec tak zacznijmy od bledow w kodzie:

Pierwszy blok to js skopiowany ze skryptu wiec pewnie w pelni poprawny, ale w tym kawalku html adokladniej tu:

<script type="text/javascript">if(isset($_POST['pole'])){ $notify = $_POST['pole']; $abcd=$_POST['pole']; ShowLMCButton($abcd); 
    }   
</script>

tagi script mowia ze bedzie to kod javascript a u ciebie wsadzasz PHP i to jeszcze bez tagow wiec jest traktowane jak js co oczywiscie jest bledem dodaj przed if <? php a po klamrze konczacej ?>. i teraz bedziesz mial kolejny blad. mianowice jak wsadzisz to w tagi i interpreter napotka ShowLMCButton to bedzie chcial wywolac funkcje PHP,a takiej funkcji PHP nie ma i wywali blad wiec uzywajac echo/print wywal to jako tekst, zeby potem js to sobie obrobilo. robiac tak napotkasz nastepna trudnosc. otoz wywolywal bedziesz funkcje js, ale paramterem jej jest $abcd ktore jest phpowska zmienna i zostanie zamienione na wartosc, ale funkcja js ShowLMCButton przyjmuje jako pierwszy paramter string ktory jest tekstem do skopiowania (idea dzialania tego jest kompletnie bzdurna co wyjasnie pozniej) ,a askoro jest tekstem to musi byc zawarte w cudzyslow " czyli wyrzucajac ShowLMCButton echem z php musisz wstawic w srodek zmienna (nie wiesz jak to musisz sie naumiec podstaw PHP).

a teraz wyjasnie czmeu to wszystko pojdzie psu na bude, bo ten smieszny plugin generuje przsycisk do kopiowania tekstu do schowka. przycisk jest geenrowany funkcja js, ktora wywoluje Flasha z odpowiednimi parametrami jak tekst do skopiowania tekst na przycisku callback url do flasha i jak widzisz tekst jest ustalany z gory, czyli gdy bedziesz chcial stworzyc cos co jest edytorem tekstu gdzie ludzie wpisuja cos i koppiuja sobie do schowka, lub zaznaczaja tekst i cha skopiowac do schowka, lub ty chcialbys zeby mogli zdecydowac co chca skopiowac to to nie zadziala bo tresc kopiowana musi byc ustalona na poczatku zaladowania przycisku i albo bedzie go ladowal za kazdym arzem od nowa, albo zmienisz na zeroclipboard, ktore IMO dziala lepiej i jest bardziej funkcjonalne.

Pozostało 580 znaków

2015-02-02 13:53
0

Dzięki wielkie za odpowiedź, no właśnie zależy mi żeby tekst który będzie w textarea mógł się dynamicznie zmieniać. Czyli np. ktoś coś wpisze w textarea naciśnie przycisk "kopiuj" i automatycznie chcę żeby tekst który będzie w textarea lądował do schowka tak aby użytkownik mógł wcisnąć "wklej" lub ctrl+v w jakimś innym oknie. Idąc za Twoimi radami porzucam powyższy skrypt w którym narobiłem sporo chaosu kombinując na wiele sposobów :D jak widać nawet nie idąc w dobrym kierunku. Zaczynam więc zabawę z "zerocliboard" znalazłem taki oto przykład:

<html>
<body>
        <script type="text/javascript" src="ZeroClipboard.js"></script>

        <div id="d_clip_button" style="border:1px solid black; padding:20px;">Copy To Clipboard</div>

        <script language="JavaScript">
            var clip = new ZeroClipboard.Client();
            var myTextToCopy = "Hi, this is the text to copy!";
            clip.setText( myTextToCopy );
            clip.glue( 'd_clip_button' );
        </script>
</body>
</html>

wrzuciłem do jednego folderu pliki: ZeroClipboard.js ZeroClipboard.swf i powyższy kod jako plik: start.html jednak w efekcie otrzymuję jedynie ramkę z napisem w środku: "Copy To Clipboard". Co powinienem zmienić w kodzie lub dodać aby mieć przycisk który będzie kopiował dane z textarea. Albo prosił bym o jakiś inny działający przykład. Jestem bardzo początkującym głównie to bazuję na przykładach zmieniając różne wartości i próbując rozgryźć jak działają poszczególne elementy.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0