Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [inne] Modyfikacja zachowania drag & drop w textarea, Głównie w Google Chrome
Print_Screen
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


W edytorach tekstu mamy taką funkcję jak: przeciągnij i upuść. Powoduje ona przeniesienie zaznaczonego fragmentu w inne miejsce. Jeśli w czasie przeciągania wciśniemy Ctrl, to zamiast przeniesienia nastąpi przekopiowanie. Niestety w przeglądarkach, ta druga funkcja nie działa.

Czy da się zmusić przeglądarkę (w szczególności Google Chrome) do tego, żeby przeciągnij i upuść wykonywane w polu tekstowym powodowało kopiowanie?

Jeśli się nie da z poziomu przeglądarki, to może da się to zrobić z poziomu strony? Dałoby się opatrzyć textarea jakimś kodem np. JavaScript, który by powodował, że drag & drop w obrębie tego pola będzie kopiowało, a nie tylko przenosiło zaznaczony tekst?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
!*!
post
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Tak, pobierasz początek/koniec zaznaczenia (focus), kopiujesz treść i na podstawie nowej pozycji kursora ją wklejasz.
http://stackoverflow.com/questions/1342536...-to-end-of-text

Ten post edytował !*! 30.03.2013, 16:08:56
Go to the top of the page
+Quote Post
Print_Screen
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


Dzięki (IMG:style_emoticons/default/smile.gif) .

Niestety nie znam się na JavaScripcie i JQuery. Mógłbym poprosić o wstawienie odpowiedniej funkcji do poniższego prostego kodu tak, żeby następował pożądany efekt?

Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="PL" />
<title>TextArea</title>
</head>
<body>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<body>
<textarea rows="15" cols="60">
</textarea>
</body>
</html>




Go to the top of the page
+Quote Post
artuross
post
Post #4





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

Ostrzeżenie: (0%)
-----


Nie, nikt nie moglby, dlatego, ze jQuery ma tak swietna dokumentacje, ze nie znalezienie tam informacji na temat poszukiwanego przez siebie zagadnienia jest naprawde trudne.
Podpowiem, ze kiedy nastepuje drag sprawdzasz czy jest wcisniety CTRL.
Go to the top of the page
+Quote Post
Print_Screen
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


Cytat(artuross @ 30.03.2013, 20:50:55 ) *
Podpowiem, ze kiedy nastepuje drag sprawdzasz czy jest wcisniety CTRL.


Po co? Przecież właśnie o tym jest ten wątek, że w przeglądarkach wciśnięty Ctrl, nie powoduje, że drag&drop kopiuje.

PS. Bez JQuery nie da się tego zrobić?
Go to the top of the page
+Quote Post
artuross
post
Post #6





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

Ostrzeżenie: (0%)
-----


Wlasnie dlatego napisalem, mozesz sam zaimplementowac taka funkcjonalonosc na swojej stronie. Mozna to zrobic bez jQuery, na vanilli, poniewaz jQuery nie oferuje nic wiecej niz czysty JavaScript.
Go to the top of the page
+Quote Post
zielu001
post
Post #7





Grupa: Zarejestrowani
Postów: 87
Pomógł: 3
Dołączył: 15.08.2009

Ostrzeżenie: (0%)
-----


  1. var zaznaczone = $('textarea').getSelection();
  2.  
  3. function textareaInsertAtCursor( o, value) {
  4. // IE
  5. if (document.selection) {
  6. o.focus();
  7. var sel = document.selection.createRange();
  8. sel.text = value;
  9. sel.moveStart( 'character', -1 * value.length);
  10. sel.select();
  11. //modern browsers
  12. } else if (o.selectionStart || o.selectionStart == 0) {
  13. var startPos = o.selectionStart;
  14. var endPos = o.selectionEnd;
  15. o.value = o.value.substring(0, startPos) + value + o.value.substring(endPos);
  16. o.selectionStart = startPos;
  17. o.selectionEnd = startPos + value.length;
  18. o.focus();
  19. // else add at the end
  20. } else {
  21. o.value += value;
  22. }
  23. }
  24.  
  25.  
  26.  


To Ci powinno pomóc.. prawie gotowiec. Wystarczy sprawdzić kiedy ktoś puścił przycisk myszki i czy ma wciśniety CTRL!..

Ten post edytował zielu001 1.04.2013, 18:23:24
Go to the top of the page
+Quote Post
Print_Screen
post
Post #8





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


Cytat(zielu001 @ 1.04.2013, 19:22:15 ) *
To Ci powinno pomóc.. prawie gotowiec. Wystarczy sprawdzić kiedy ktoś puścił przycisk myszki i czy ma wciśniety CTRL!..


Dzięki, ale ja znam tylko czysty HTML i trochę CSS, więc nie wiem za bardzo, co z tym kodem zrobić. Dlatego prosiłbym o wbudowanie w wyżej zamieszczony mój prosty kod. Wystarczy, żeby działało z Chrome (z IE nie musi) i może być z wciśniętym Ctrl lub nie - byle kopiowało zamiast przenosić.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 23:38