ďťż
Podstrony
|
telcocafeHejka!Ostatnio ogarnęła mnie mania "bookmarkletowania" - nadodawałem gotowych i natworzyłem sobie własnych "skryptozakładek" na każdą okazję, w tym parę służących m.in. do wyszukiwania zaznaczonego słowa - np. w słowniku dict.pl I mam mały problem - np. zamiast słowo "łóżko" zakodować w URLu jako "%B3%F3%BFko" dostaję: escape(): "%u 0 1 4 2% F 3 % u 0 1 7 C k o" (tylko bez spacji - dodałem, bo wyświetlało tutaj nie kody liter unicode, tylko prawidłowe literki) encodeURI(): "%C5%82%C3%B3%C5%BCko" Jeszcze podam przykład bookmarkleta: (Używam głównie Firefoxa i wiem, że w takim razie mógłbym pominąć poniżej parę if'ów...) java script:( function() { function getSearchString (promptString) { s = null; if(document.selection && document.selection.createRange) { s = document.selection.createRange().text; } else if (document.getSelection) { s = document.getSelection(); if(! (s && s.length)) { if(frames.length>1) { for(i=0;i<frames.length;i++) { s=frames[i].document.getSelection(); if(s) break; } } } } if(! (s && s.length)) { s = prompt(promptString,''); } return s; } searchString = getSearchString('Podaj słowo (EN lub PL) do sprawdzenia w słowniku (lub zaznacz słowo przed użyciem bookmarleta)'); if(searchString != null) { if(searchString.length) { location = 'http://www.dict.pl/plen?word='+escape(searchString); } else { location = 'http://www.dict.pl'; } } } )(); A więc: czy jest jakaś gotowa funkcja, która zrobi prawidłowo "URLencoding", czy muszę sam zdefiniować/znaleźć taką funkcję, (tj. chyba szybciej już będzie przepuścić wynik escape() przez jakieś RegExpy)? Pozdrawiam, Mirek PS: Jakby ktoś chciał dodać sobie powyższego bookmarkleta (tylko nie w IE6), to musi przerobić tak, żeby był w jednej linijce - tu rozbiłem dla przejrzystości - no i usunąć spację z początkowego słowa "java_script" Albo skopiować stąd (tylko też bez spacji w 1. słowie): java script:(function(){ function getSearchString (promptString) { s = null; if(document.selection && document.selection.createRange) { s = document.selection.createRange().text; } else if(document.getSelection) { s = document.getSelection(); if(! (s && s.length)) {if(frames.length>1){for(i=0;i<frames.length;i++){s=frames[i].document. getSelection();if(s)break;}}} } if(! (s && s.length)) { s = prompt(promptString,''); } return s; } searchString = getSearchString('Podaj słowo (EN lub PL) do sprawdzenia w słowniku (lub zaznacz słowo przed użyciem bookmarleta)'); if(searchString != null) { if(searchString.length) { location = 'http://www.dict.pl/plen?word='+escape(searchString); } else { location = 'http://www.dict.pl'; } } })(); --------- Edit: --------- Na razie zamieniłem poprostu: escape(searchString) // -- na -- escape(searchString).replace(/\x25u0105/g, '\x25B1').replace(/\x25u0107/g, '\x25E6').replace(/\x25u0119/g, '\x25EA').replace(/\x25u0142/g, '\x25B3').replace(/\x25u0144/g, '\x25F1').replace(/\x25u015B/g, '\x25B6').replace(/\x25u017A/g, '\x25BC').replace(/\x25u017C/g, '\x25BF').replace(/\x2520/g, '+').replace(/\x25u0104/g, '\x25A1').replace(/\x25u0106/g, '\x25C6').replace(/\x25u0118/g, '\x25CA').replace(/\x25u0141/g, '\x25A3').replace(/\x25u0143/g, '\x25D1').replace(/\x25u015A/g, '\x25A6').replace(/\x25u0179/g, '\x25AC').replace(/\x25u017B/g, '\x25AF') // we wzorcu (ale nie w podstawianej w zamian wartości) zamiast \x25 można użyć znak % - ale wtedy na forum wyświetlają się prawidłowe literki, a nie ich kody - ale nadal chętnie poznam f-cję, która robi to sama - jeśli tylko takowa istnieje... Użytkownik Orlin edytował ten post 04 styczeń 2007, 19:43 |
|||
Sitedesign by AltusUmbrae. |