Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt Funkcja Czekaj
Forum PHP.pl > Forum > Po stronie przeglądarki
pupek121
Witam ,

Potrzebuję drobnej pomocy odnośnie skryptu pisanego w javascript , a potrzebne mi to do gry przeglądarkowej plemiona tj. do małpki by wykonywało akcje na wielu kartach czyli całej przeglądarce.

Prosty skrypt:
java script:document.getElementById('selectAllUnits').click();(W tym miejscu potrzebna funkcja czekaj);document.forms[0].attack.click();document.forms[0].submit.click();
Pierwsza część skryptu to wybranie wojsk w placu , a następnie potrzebna mi funkcja czekania z którą mam ogromny problem czyli setTimeout nie czekało wcale , a zagłębiony nie jestem w tym chociaż próbowałem z kodem niżej.
A tuż po funkcji czekaj jest proste polecenie by kliknęło przycisk kolejno "Napad" i "OK"

Kod na funkcję czekaj i nie mam pojęcia czy to prawidłowo i jak to się ma do mojego skryptu wyżej.
function pause(1000) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}
Pomógłby ktoś lub podpowiedział coś?
Z góry dziękuję.
Pyton_000
a z czym mamy Ci podpowiedzieć? Maszz funkcje, wystarczy jej użyć
Comandeer
Ło panie… Blokować wątek przeglądarki, bo chcesz wymusić czekanie? Nie tędy droga. Poprawnym rozwiązaniem jest użycie setTimeout… po uprzednim zrozumieniu czym jest programowanie asynchroniczne w JS.
Pyton_000
Tutaj to chyba nie ma znaczenia.
Comandeer
@Pyton_000 wyobrażasz sobie, żeby w grze typu Plemiona nagle karta przeglądarki zwiesiła się na 2 sekundy bez żadnego info co się dzieje? Bo de facto to robi ten skrypt - zwiesza kartę na określony czas.
Pyton_000
Ale o to tutaj trochę chodzi, bo skrypt musi poczekać kilka s. na akcje które się wykonają.
Wydaje mi się że bez znaczenia czy zrobi to z timeout czy "sleep"
Comandeer
Odpal se ten skrypt i zobacz co się stanie wink.gif Firefoks glebnie i wyświetli monit, że skrypt zwariował. Chrome zwiesi całą kartę (jakby nie miał kart w osobnych procesach, zwiesiłby się cały, jak lisek). Nic się nie da z tym zrobić - na nic kliknąć itd. Co user pomyśli? "Przeglądarka mi padła". No bo w sumie to prawda wink.gif

A przepuszczenie tego przez timer nie zablokuje UI przeglądarki i będzie można wyświetlić normalny komunikat, że coś się dzieje i należy poczekać.
Pyton_000
Ja tam się kłócił nie będę tongue.gif
pupek121
Panowie jeden mi zrobił tak powinno to wyglądać.

java script:document.getElementById('selectAllUnits').click();
//(W tym miejscu potrzebna funkcja czekaj);
setTimeout(function() {document.forms[0].attack.click();
document.forms[0].submit.click();}, 1000);



czyli setTimeout tylko jest jeden problem Ok nie klika a powinno heh biggrin.gif
Comandeer
W sumie nie bardzo wiadomo jak pomóc, bo nie wiadomo do czego się odnoszą poszczególne elementy w Twoim kodzie…
pupek121
Tak czy siak do tej funkcji "czekaj" brakowało mi właśnie tego

setTimeout(function() {document.forms[0].attack.click();
document.forms[0].submit.click();}, 1000);


i jest git

Panowie a jest taka możliwość

Mam odpalone tam dajmy na to 10 kart mam skrypt który wstawia mi odpowiednie liczby do poszczególnych tabelek jeśli klikne na ten skrypt to wpisuje mi ale tylko na tej karcie na której siedze a chodzi mi o to żeby za 1 kliknięciem wstawiało mi na wszystkie karty rozumiecie mniej wiecej o co chodzi biggrin.gif ?
Comandeer
To powinno pomóc: http://blog.piotrnalepa.pl/2015/02/04/js-j...i-przegladarki/ (chociaż raczej powinieneś powinieneś zamienić localStorage na sessionStorage)

Albo tradycyjnie: window.postMessage i tego typu sprawy.
pupek121
Sam sobię nie poradzę więc pisze składając wszystko do kupy jeszcze raz zlecenie prośba smile.gif

Mam odpalone tam dajmy na to 10 kart mam skrypt który wstawia mi odpowiednie liczby do poszczególnych tabelek jeśli klikne na ten skrypt to wpisuje mi ale tylko na tej karcie na której siedze a chodzi mi o to żeby za 1 kliknięciem wstawiało mi na wszystkie karty rozumiesz mniej więcej o co chodzi da radę coś takiego zrobić smile.gif ?

W malpce wstawia na all kartach szlachte + to co sobie wybierzemy.
Jedyny minus to taki , ze po kliknieciu napad twierdzi , ze nie wybrano wojsk.

Moze ktos kto lepiej sie zna jest w stanie pomoc wchodzac na strone privatewars.pl i sprawdzic dlaczego tak sie dzieje po wykonaniu skryptu.

java script:insertUnit(document.forms[0].unit_marcher, 0);insertUnit(document.forms[0].unit_snob, 1);



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