Zabawy z javascript

w dziale Strony WWW w Operze
danadam napisał(a):

Witam!

Od razu zaznaczam, że nie siedzę w javascripcie, więc nie bijcie smile Prawdę mówiąc, to do dzisiaj nie miałem o nim/niej zielonego pojęcia. Jednak korciły mnie dwie sprawy, więc przysiadłem i oto rezultat.

(Opera 9.01 [build 383], Firefox 1.5.0.4, Debian Testing)

1. Atrybut 'pattern' jest null czy nie?

    <script language="javascript">
        function checkNull() {
            var form = document.forms["form"];
            var e = form.elements["field"];
            var isNull1 = e.boo != null ? "not null" : "null";
            var isNull2 = e.pattern != null ? "not null" : "null";
        }
    </script>

    <form method="get" name="form" onSubmit="return checkNull()">
        <input type="hidden" name="field" value="">
        <input type="submit">
    </form>

Pod operą zmienna isNull1="null", a isNull2="not null". Pod firefoxem obie zmienne mają wartość "null".
Sprawdź

Z powodu powyższego błędu/ficzeru nie działa mi pobieranie historii konta w ING (ale zawsze można w pasku adresu odpowiednie parametry ręcznie wpisać cool )

2. Czy kolejność przypisywania atrybutów jest ważna?
        function addHidden(value) {
            var e1 = document.createElement("INPUT");

            e1.value = value;
            e1.type = "hidden";
        
            e1.name = "hiddenField1";
            document.forms["fForm"].appendChild(e1);


            var e2 = document.createElement("INPUT");

            e2.type = "hidden";
            e2.value = value;

            e2.name = "hiddenField2";
            document.forms["fForm"].appendChild(e2);

        }


Wartością elementu hiddenField1 będzie pusty string, natomiast wartością elementu hiddenField2 będzie wartość przekazana w parametrze. Jedyna różnica jaka tu występuje, to kolejność ustawiania atrybutów "type" i "value". Oczywiście pod firefoxem ta kolejność nie ma znaczenia i wartości obu elementów są równe przekazanemu parametrowi.
Sprawdź - Podany link otwiera stronkę z polem tekstowym i przyciskiem. Należy coś wpisać i kliknąć. Każda zmiana zawartości pola tekstowego powoduje dodanie do formularza dwóch elementów typu hidden o wartości równej aktualnej zawartości pola tekstowego. Po kliknięciu na przycisk wyświetla się alert() ze spisem elementów formularza i ich wartościami.

Poniżej załączam źródła, do których w chwili obecnej wskazuja powyższe linki:
1testNull.html
1testJS.html

danadam napisał(a):

Właśnie sprawdziłem jak to się zachowuje pod Operą 8.54 pod Windowsem. W pierwszym przypadku obie zmienne mają wartość "null", a więc tak jak pod Firefoxem. To by się zgadzało, bo pod tą wersją Opery historia w ING działała bez problemów.

Natomiast co do drugiego przypadku, to jest tak samo jak pod Operą 9.

woj-tek napisał(a):

Błąd opery czy kolejny feature?

danadam napisał(a):

Ehh.. chyba za mało kontrowersyjny temat dałem rolleyes Jakikolwiek komentarz kogoś, kto się zna na javascripcie byłby mile widziany smile

rrutkows napisał(a):

Opera 9 wspiera Web Forms 2.0, gdzie można zdefiniować atrybut pattern dla elementów input. Widocznie dziewiątka zakłada, że domyślnie taki atrubut zawsze istnieje i jest równy "", nawet gdy nie podano go dosłownie w kodzie strony. Czyli raczej feature. Co do drugiego przypadku - raczej bug.