zapytanie do wyszukiwarki

w dziale Opera
pankot napisał(a):

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/

Ryszard napisał(a):

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?

daroc napisał(a):

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.

pankot napisał(a):

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.

Barthezdeleted napisał(a):

Spróbuj tak:

adres?zapytanie

pankot napisał(a):

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

Ryszard napisał(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

Ryszard napisał(a):

Ciekawe - przyszło powiadomienie, że pankot odpisał a na forum jego odpowiedzi nie ma.
Pankot - usunąłeś swoją wiadomość?

pankot napisał(a):

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 wink

uniqiq napisał(a):

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.

pankot napisał(a):

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.

uniqiq napisał(a):

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

pankot napisał(a):

no w ten sposób mi działa
wielkie dzięki

uniqiq napisał(a):

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.

uniqiq napisał(a):

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.

pankot napisał(a):

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.

Barthezdeleted napisał(a):

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 faint

szyk napisał(a):

Originally posted by Barthez:

Niestety przycisk nie działa. Jakieś pomysły czemu?


Nie wolno stosować " w kodzie javaskryptowym, tylko ' . smile

Barthezdeleted napisał(a):

Originally posted by szyk:

Nie wolno stosować " w kodzie javaskryptowym, tylko ' .


Oczywiście działa smile 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

uniqiq napisał(a):

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).

szyk napisał(a):

Originally posted by Barthez:

Tak przy okazji, widziałem stosowaną jedną jak i drugą formę zapisu.
i poniżej smile


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 smile). Opera traktuje pewnie taki "podwójny" apostrof jako zakończenie definicji przycisku i ignoruje dalszą jej część.

uniqiq napisał(a):

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.

daroc napisał(a):

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. left Może jako code będzie działać.

daroc napisał(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. wink
javascript:void(alert('It\'s amazing!'));

uniqiq napisał(a):

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.

daroc napisał(a):

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. wink 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. wink