Jeśli szukam na przykład słowa "canon" to po kliknięciu na Szukaj na pasku adresu pojawia się zapytanie do wyszukiwarki.
przykład:
Dla strony szukaj.onet.pl
http://szukaj.onet.pl/onet.html?qt=canon
Natknąłem się na kilka stron, które po kliknięciu na Szukaj nie zmieniają nic w pasku adresu lub linka powtórnie nie można użyć zmieniając szukane słowo, a potrzebuję wyciągnąć dla nich właśnie zapytanie do wyszukiwarki.
przykład strony:
http://www.chipdocs.com
przy próbie wyszukania 7800 na pasku adresu pojawia się co prawda
http://www.chipdocs.com/pnsearch/search.html?okwd=7800
ale przy próbie zmiany na szukanie 741
http://www.chipdocs.com/pnsearch/search.html?okwd=741 nie działa
inna strona
http://chipmanuals.com/
Originally posted by pankot:
przykład strony:
http://www.chipdocs.com
Wyszukiwarka używa metody "post" - co łatwo sprawdzić klikając w "Szczegóły" po próbie dodania tej wyszukiwarki do Opery.
Ta wiedza - znajomość adresu z pytaniem jest Ci do czegoś potrzebna?
A w czym Ci to przeszkadza, że wyszukiwana fraza nie znajduje się w pasku adresu?
Dzieje się tak dlatego, ponieważ formularz jest wysyłany metodą POST (co akurat przy wyszukiwaniu jest dość sensowne, żeby nie zawalać paska adresu i jego historii). W przypadku metody GET wszystkie przekazywane wartości są widoczne w pasku adresu.
Chyba wszystkie przeglądarki zachowują się właśnie w ten sposób.
Faktycznie rozwiązanie dość sensowne.
Potrzebne mi to do skryptu Google FX, który ma opcję metawyszukiwania - wszystko co się wpisze w pole Googla można wysłać do wielu stron na raz . Przy stronach z metodą POST - nie wiem właśnie jak sformuować zapytanie - co jest proste na stronach z metodą GET,bo wszystko widać na pasku adresu.
Spróbuj tak:
adres?zapytanie
To znaczy tak ?:
http://www.chipdocs.com?7800 lub http://www.chipdocs.com/?7800
http://www.chipdocs.com/pnsearch/search.html?7800
nie działa
Originally posted by pankot:
To znaczy tak ?:
http://www.chipdocs.com?7800 lub http://www.chipdocs.com/?7800
http://www.chipdocs.com/pnsearch/search.html?7800
nie działa
Nie. Nie tak.
Bartez dał Ci ogólny schemat, a Ty powinieneś ustalić szczegóły.
Dodajesz wyszukiwarkę w Operze i albo rozwijając "Szczegóły>>" albo przez plik wyszukiwarek sprawdzaszjak wygląda zapytanie
W tym przypadku powinno być np. http://www.chipdocs.com/pnsearch/search.html?keyword=7800
Ciekawe - przyszło powiadomienie, że pankot odpisał a na forum jego odpowiedzi nie ma.
Pankot - usunąłeś swoją wiadomość?
Nie do końca rozumiem.
Wchodzę w preferencje/wyszukiwanie/dodaj
wpisuję nazwę wyszukiwarki, skrót i co dalej....
edit
usunąłem-myślałem,że to pojąłem ale jednak nie
Jest prosta metoda. Zamień tymczasowo formularz POST na GET. Można to zrobić na przykład takim skryptem (ukradłem go z jakiejś strony):
javascript:(function(){var x,i; x = document.forms; for (i = 0; i < x.length; ++i) x[i].method="get"; alert("Changed " + x.length + " forms to use the GET method. After submitting a form from this page, you should be able to bookmark the result."); })();
Wrzuć ten skrypt do zakładek, albo zrób sobie przycisk z tym skryptem. Potem wchodzisz na stronę, klikasz na zakładkę/przycisk, i formularz POST zmienia się w formularz GET.
Zrobiłem sobie przcisk, wszedłem na stronę http://chipmanuals.com, kliknąłem na przycisk, wyszukałem element-ale na pasku adresu nie zauważyłem żadnych zmian.
Zamiast przycisku zapisałem do post.js i wrzuciłem do katalogu ze skryptami. Po wejściu na każdą stronę wyświetla komunikat, że zmienia formularz na GET. Znów wlazłem na stronę, wyszukałem coś, ale adres z zapytaniem nadal ukryty.
Wszedłem na stronę, którą mi podałeś. Na wszelki wypadek (żeby sprawdzić czy nie zrobiłem literówki w poprzednim poście) wkleiłem do paska adresu skrypt który Ci podałem, kliknąłem Enter, i zostałem poinformowany o tym, że zmienił metody dwóch formularzy na GET. Potem wyszukałem "max232", Kliknąłem "To to search!" i adres zmienił się na:
http://chipmanuals.com/datasheets/search/go/?query=max232&submit=Go+to+search%21
Wyraźnie widać, że formularz z akcją
http://chipmanuals.com/datasheets/search/go/
ustawia zmienne
query=wartość szukana submit=Go+to+search%21
no w ten sposób mi działa
wielkie dzięki
Możesz teraz dodać zakładkę ze skryptem: wystarczy dodać zakładkę i w miejsce na adres strony wkleić zawartość skryptu.
Możesz też dodać sobie przycisk: po prostu wklej skrypt w pole adresu, kliknij enter (oczywiście nie wyświetli ci się żadna strona - co najwyżej ta, na której byłeś wcześniej, albo taka z informacją o błędzie, ale nic nie szkodzi), a potem "złap" faviconę z paska adresu i przesuń ją na pasek osobisty, pasek statusu, albo gdzieś indziej, gdzie chcesz mieć przycisk.
A - jeszcze jedno wyjaśnienie. Ryszardowi chodziło o to, że możesz wygenerować wyszukiwarkę w Operze. Wystarczy na polu w którym wpisujesz szukane słowo kliknąć prawym przyciskiem myszy, a następnie wybrać z menu "dodaj wyszukiwarkę", lub "create search" (w zależności od wybranej wersji językowej). Wtedy Opera sama stworzy odpowiednią wyszukiwarkę. Możesz z niej oczywiście korzystać. Możesz ją też odnaleźć na liście wyszukiwarek w opcjach Opery i zobaczyć jak wygląda wygenerowane zapytanie.
Nie wiem do czego potrzebujesz tej informacji, ale możliwe że wystarczy Ci dodanie nowej wyszukiwarki. To jedna z fajniejszych funkcji Opery.
Współpracuję z autorem skryptu GoogleFX. Podsunąłem mu kilka fajnych pomysłów rozszerzających możliwości jego skryptu m.in możliwość wysyłania zapytania z pola wyszukiwawczego Googla do wielu wyszukiwarek na raz. Na przykład przełączasz sobie pasek wyszukiwawczy na kategorię "porównywarki cen" zaznaczasz opcję "search" dajesz "szukaj" i wtedy słowo wpisane w pole Googla wysyłane jest do wszystkich stron na raz ,które otwierane są w tle-takie metawyszukiwanie.
Planuję dodać dodatkową kategorię Datasheet z wyszukiwarkami elementów elektronicznych.Zgryz miałem właśnie tylko ze stronami gdzie użyta była metoda POST, bo nie widziałem ścieżki do zapytania.
Originally posted by uniqiq:
albo zrób sobie przycisk z tym skryptem.
Używając tej strony, zgodnie z wskazówkami z tej strony stworzyłem taki przycisk:
Go to page, "javascript:(function(){var x,i; x = document.forms; for (i = 0; i < x.length; ++i) x[i].method="get"; alert("Changed " + x.length + " forms to use the GET method. After submitting a form from this page, you should be able to bookmark the result."); })();" , , "POST->GET"
Niestety przycisk nie działa. Jakieś pomysły czemu?
Oczywiście wpisanie samego skryptu w pole adresy działa
Originally posted by Barthez:
Niestety przycisk nie działa. Jakieś pomysły czemu?
Nie wolno stosować " w kodzie javaskryptowym, tylko ' .
Originally posted by szyk:
Nie wolno stosować " w kodzie javaskryptowym, tylko ' .
Oczywiście działa Dzięki !
Tak przy okazji, widziałem stosowaną jedną jak i drugą formę zapisu. Ot chociażby tu:
var element = document.createElement("div"); element.id = 'testqq'; var el = document.getElementById('testqq'); // el will be null
W javascripcie można używać zarówno "..." jak i '...'.
Mają troszeczkę inne znaczenie. W "..." można stosować znaki specjalne poprzedzone znakiem \ (backslash), na przykład "tytuł: \"Ala ma kota\"".
W '...' taka konstrukcja nie zadziała. Z tego powodu w łańcuchu znaków '...' nie można stosować znaku ' (bo nie ma jak).
Originally posted by Barthez:
Tak przy okazji, widziałem stosowaną jedną jak i drugą formę zapisu.
i poniżej
Chodziło mi o to, że w definicji przycisków w toolbar.ini nie może być " w nieodpowiednich miejscach, w tym wypadku w kodzie javascryptowym (bo zwykle lub zawsze kończy się to niedziałaniem przycisków ). Opera traktuje pewnie taki "podwójny" apostrof jako zakończenie definicji przycisku i ignoruje dalszą jej część.
Ale jest to problem standardu tworzenia przycisków w Operze, a nie javascriptu. Po prostu przyciski nie zostały przygotowane do umieszczania w nich javascriptów. Prawdę mówiąc nie znalazłem dokumentacji na stronie opera.com dotyczącej tworzenia przycisków metodą "opera:button". Metoda jest opisana po łebkach na niektórych stronach związanych z Operą, ale brak dokumentacji do tej funkcjonalności wydaje mi się ... zadziwiający.
Problem w tym, że utworzony przycisk jest linkiem. Wtedy kod html wygląda mniej więcej tak (z głowy piszę):
<a href="button://javascript:alert("okienko")">button</a> ^ ^ ^ ^
Jak widać cudzysłowy od href i wewnątrz skryptu powielają się.
Edit: Dziwne, zrobilem encje, ale po dodaniu nowych postów zostały one zamienione na zwykle znaki większe i mniejsze od. Może jako code będzie działać.
Originally posted by uniqiq:
W '...' taka konstrukcja nie zadziała. Z tego powodu w łańcuchu znaków '...' nie można stosować znaku ' (bo nie ma jak).
Chyba nie rozumiem. Od dawna robię tak zarówno w JavaScript jak i w PHP.
javascript:void(alert('It\'s amazing!'));
Haha. Rzeczywiście podałem zły przykład, bo akurat \' i \", a także \\ zadziałają. Chodzi o obsługę znaków specjalnych, jak łamanie linii za pomocą \n, czy tabulator przy pomocy \t.
Przynajmniej z tego co jeszcze pamiętam z javascriptu, co do php jestem bardziej przekonany, że tak rzeczywiście jest.
Aż z ciekawości sprawdziłem.
W JavaScript obydwa przykłady zadziałają tak samo (przeniesienie do nowej linii):
javascript:void(alert("It's\namazing!")); javascript:void(alert('It\'s\namazing!'));
Natomiast w PHP
echo "It's\namazing!"; echo 'It\'s\namazing!';
tylko pierwszy przykład przeniesie "amazing!" do nowej linii. W drugim przypadku zostanie wyświetlona jedna linijka o treści It's\namazing. Zatem w PHP znaki specjalne są obsługiwane tylko przez cudzysłowy (" "). Przy okazji - podobnie jest z obsługą zmiennych. '$zmienna' spowoduje wyświetlenie napisu $zmienna, podczas gdy "$zmienna" - wyświetli wartość zmiennej $zmienna. Dlatego też przy wyświetlaniu tekstu powinno się korzystać z apostrofów - taki skrypt działa odrobinę szybciej, bo stringi nie są skanowane w poszukiwaniu zmiennych.
Ale jak widać w JavaScript nie ma to znaczenia, czy użyjemy apostrofów czy cudzysłowów. Chyba że jest jakaś mała różnica, którą trudno wybadać empirycznie.
Edit: Swoją drogą byłem przekonany, że odpowiadam na posta Ryszarda. Chyba jakoś dziwnie skojarzyłem avatary.