Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JavaScript escape();
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Krzychur
Witam!
Po głębokich przemyśleniach, których nikt już nie zmieni, doszedłem do wniosku, że w moim przypadku, poniższe rozwiązanie jest najlepsze.

Załóżmy, że mamy duże pole formularza - <textarea> i chcemy klikając na przycisk otworzyć okno z parametrem content, którego wartość stanowi tekst, umieszczony wcześniej w textarea.

Na początku zrobiłem na szybko coś takiego:
  1. <textarea name="content" id="content"></textarea>
  2. <input type="button" onclick="window.open('preview.html?content='+document.getElementById('content').value,'Podglad','width=400;height=300')" />


Pierwsza faza testu niczego nie okazała szczególnego, ale jakiekolwiek "entery", były ignorowane, popatrzyłem na to co zawiera parametr content, więc pomyślałem o jakimś escapowaniu znaków, zrobiłem coś w stylu:
  1. <textarea name="content" id="content"></textarea>
  2. <input type="button" onclick="window.open('preview.html?content='+escape(document.getElementById('content').value),'Podglad','width=400;height=300')" />


Z początku wszystko wyglądało świetnie, ale niestety, okazało się, że np. polskie literki i różne znaki specjalne, odkodowane na stronie preview.html w php przy pomocy funkcji takich jak urldecode() i rawurldecode() nie dało pozytywnych rezultatów.

Może ktoś poleci mi jakąś lepszą funkcję js opierającej się na podobnych założeniach?

Dziękuję.


Jeżeli w kodzie dostrzegacie jakieś literówki, to nic, kod pisałem na wzór tego, który leży głęboko w mojej pamięci...
ActivePlayer
moze latwiej umiescic w preview zawartość w tagach <pre></pre> ?
revyag
A może inaczej ?

  1. <input type="button" onclick="window.open('preview.html','Podglad','width=400;height=300')" />


Natomiast w pliku preview.html robisz diva, powiedzmy tak:
  1. <div id="prev"></div>

i wyświetlasz
Kod
document.getElementById('prev').innerHTML=opener.document.getElementById('content').value
Krzychur
Wszystko byłoby pięknie, gdyby nie fakt, że to ma być przekazane do php, a nie wysyłając formularz (co jest równoznaczne z kombinowaniem z edycją atrybutów target i action, a potem przywróceniem do normy), to najłatwiej jest to zrobić metodą GET...

Sposób nie podlega negocjacją niestety, chyba, że jest jakiś lepszy...


Przedstawiam poniżej drogę tej informacji:
wpisujemy ją w pole formularza -> klikamy przycisk otwierający stronę preview.html?content=(...) -> .htaccess wyłapuje wszystkie pliki zakończone na .html i przekazuje to do index.php -> metoda silnika sprawdza, z czym mamy do czynienia i przekazuje daną do specials.php?action=preview -> kolejna metoda silnika sprawdza jeszcze, czy w adresie ale tym z .html nie ma róznych parametrów w linku i jeżeli są to je wyłapuje i umieszcza je w tablicy - $_GET[$param] = urldecode($value); -> potem to wyświetlam, o bbCode nic nie mówię, bo sprawdzam z i bez bb
revyag
Użyj funkcji do zastąpienia znaków nowej linii przez br. smile.gif
Robisz wszystko tak jak pierwszym sposobem, a w pliku preview.html używasz nl2br na tekście z geta.
  1. <?php
  2. echo nl2br($_GET["content"]);
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.