Funkcja explain() jako parametr przyjmuje napis i używa go w metodzie document...
Serwis znalezionych hasełOdnośniki
- Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
- W lipcu 1941 roku jako czBonek Episkopatu Polski witaB chlebem i sol oficerw niemieckich wojsk okupacyjnych, haDbic rd arystokratw polskich i Episkopat
- By moe, i tu wanie odkryjemy jeszcze dziedzin naszego wynalazku, dziedzin, w ktrej zdoby si moemy jeszcze na oryginalno, naprzykad [!] jako parodyci...
- Od samego początku nasza praktyka ruszyła ostro z kopyta, mieliśmy dostatecznie dużo pracy, by jako młodzi lekarze poczuć się zadowoleni, ale i na tyle dużo,...
- Tak więc nie można też ustalić, czy pewne rodzaje literackie ukształtowały się raczej pod naciskiem zjawisk realnych, czy raczej — norm kulturowych jako...
- Zaistnienie filozofii jako dziedziny kultury narodowej, w ktrej nacja wyra|a swj [wiatopogld, byBo mo|liwe, pojawiB si bowiem system okre[lonych poj i metod
- Rwnoczenie kocha ono rodzica-rywala spostrzegajc go jako osob wszechpotn i wszech-wiedzc, a wic rwnie o skrytych pragnieniach dziecka...
- pozytywistycznych, które wszelkie warianty artyzmu traktują jako instrumenty krasomówcze, a wartość słowa poetyckiego pragną mierzyć wartością...
- w peni zrealizowany ze wzgldu na wybuch U wojny wiatowej, to jednak podstawy prawne posuyy jako dorobek stanowicy punkt wyjcia do prac kontynuatorskich w Polsce...
- Wyobraz to sobie jako spektrum, z pozycja „Kontuzjowany” u jednego konca i pozycja „Unieruchomiony” u drugiego...
- jako zakładnik, wszedł do miasta i postanowił go wykraść i zbiec do Judei; następnie korzystając z tego, że Kasjusz musiał spiesznie podążać przeciwko...
Smutek to uczucie, jak gdyby się tonęło, jak gdyby grzebano cię w ziemi.
write() do wyświetlenia HTML w cierpliwie czekającej parent.frames[1]. Oto wiersze 111–118:
function explain(str) {
with (aFrame.document) {
open();
writeln('<HTML><BODY BGCOLOR=WHITE><FONT FACE=Arial>' + str +
'</FONT></BODY></HTML>');
close();
}
}
Mimo że zatroszczyliśmy się o zdarzenie onMouseOver, explain(), nadal ma jeszcze nieco pracy. Zwróćmy uwagę, że explain() wywoływana jest znów w wierszu 101 w obsłudze zdarzenia onMouseOut. Tym razem jednak funkcji explain() przekazywany jest pusty napis, więc aFrame będzie czyszczona po każdym zdarzeniu onMouseOut.
Jedyne, co nam zostało, to zabezpieczenie się przed jakąkolwiek akcją w przypadku kliknięcia naszego łącza przez użytkownika. W wierszu 102 znajdziesz zapis onClick="return false;". Dzięki temu dokument wskazany w atrybucie HREF nie zostanie załadowany.
Należy pamiętać, że nadal jesteśmy w pętli for. Powyższy proces ma miejsce dla każdej odpowiedzi, od 0 do howMany
- 1. Kiedy pętla for zakończy swoje działanie, zmienna results jest długim napisem, zawierającym liczbę prawidłowych odpowiedzi, liczbę wszystkich pytań, tekst pytań z możliwymi odpowiedziami i wyborami zrobionymi przez użytkownika oraz informacją o prawidłowości jego odpowiedzi. W wierszach 107–109 dodajemy jeszcze końcowe znaczniki HTML, ładujemy całość do dolnej ramki i zamykamy funkcję:
results += '\n\r</BODY></HTML>';
qFrame.location.replace("javascript: parent.frames[0].results");
}
59 Rozdział 2 - Test sprawdzany na bieżąco
chickenOut()
Istnieje jeszcze jedna drobna kwestia: co się stanie, jeśli użytkownik zawczasu zakończy test. Oczywiście można by się tym nie przejmować, warto jednak dodać tę funkcję właśnie po to, aby aplikację rozszerzyć. Oto kod wierszy 60 do 65: function chickenOut() {
if(stopOK &&
confirm('Masz już dość? Tchórzysz?')) {
gradeTest();
}
}
Jeśli użytkownik potwierdzi rezygnację, wywoływana jest gradeTest(). Pamiętajmy, że użytkownik może się wycofać po odpowiedzeniu na przynajmniej jedno pytanie. Zmienna stopOK początkowo ustawiana jest na false, a na true wtedy, kiedy qIdx ma wartość większą od 1 – wiersz 53.
Chodzi o to, że gradeTest() porównuje odpowiedzi z pytaniami, nawet jeśli użytkownik na nie nie odpowiedział.
Można by pokusić się o stwierdzenie, że czyni to straszliwe spustoszenie w morale testowanego, ale taka jest cena tchórzostwa.
Kierunki rozwoju
Aplikację tę można modyfikować na wiele sposobów. Dwa narzucające się rozszerzenia to zabezpieczenie przed oszustwami przez stworzenie serwera oceniającego oraz zmiana aplikacji na badanie ankietowe.
Uodpornienie na oszustwa
Jedną z pierwszych myśli po zapoznaniu się z aplikacją może być obawa, że użytkownik sprawdzi odpowiedzi.
Wyszukiwanie odpowiedzi może okazać się trudne, otwierając plik źródłowy JavaScript, ale da się to zrobić.
Możemy to zagrożenie usunąć, jeśli po prostu nie będziemy wysyłać wraz z aplikacją odpowiedzi, ale zażądamy od użytkownika przekazania sobie jego odpowiedzi. Nie będziemy się tutaj dokładnie zajmować serwerem oceniającym, ale rzecz nie będzie trudniejsza od funkcji gradeTest(). Może trzeba uwzględnić trochę więcej zagadnień, ale zasady pozostają bez zmian.
Aby usunąć odpowiedzi z aplikacji i dodać przesyłanie odpowiedzi użytkownika, należy:
•
Usunąć z obiektów i tablicy wszelkie dane zawierające prawidłowe odpowiedzi w questions.js.
•
Usunąć funkcję gradeTest() i zamienić jej wywołanie w buildQuestion() wraz z printResults().
•
Zmodyfikować printResults() tak, aby użytkownik mógł obejrzeć swoje odpowiedzi i umożliwić przesyłanie ich w postaci HTML do oczekującego serwera.
Usuwanie odpowiedzi z tablicy
Usuń z konstruktora pytań w question.js this.answer oraz this.support. Zmień poniższy zapis: function question(answer, support, question, a, b, c, d) {
this.answer = answer;
this.support = support;
this.question = question;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
return this;
}
na następujący:
function question(question, a, b, c, d) {
this.question = question;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
return this;
}
60
warto zwrócić uwagę, że usunięto też zmienne answer i support. Teraz, kiedy usunąłeś je z konstruktora, można pozbyć się ich ze wszystkich wywołań operatora new dla każdego elementu units. Innymi słowy, z każdego elementu units należy usunąć pierwsze dwa parametry.
Usuwanie gradeTest() i modyfikacja buildQuestion()
Jako że nie ma już odpowiedzi ani wyjaśnień, nie ma powodu lokalnie oceniać testu czy wyświetlać jego wyników.
Oznacza to, że możesz pozbyć się funkcji gradeTest(). Po prostu w pliku administer.html należy usunąć wiersze 66
do 76. Można też pozbyć się wywołania gradeTest() w buildQuestion() w wierszu 40. Warto zastąpić to wywołaniem printResults(), aby użytkownik mógł zobaczyć swoje odpowiedzi w postaci HTML.
Wiersze 39 do 42 zmień z poniższej wartości:
if (qIdx == howMany) {
gradeTest();
return;
}
na:
if (qIdx == howMany) {
printResults();
return;
}
Modyfikacja printResults()