Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js]Wywolywanie f-cji w operze
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
squid
Witam, mam sobie jakas f-cje (w js)
Kod
function funkcja1()
{
    // cos sie tu robi
    funkcja2();
}


i mam koljna fcje
Kod
function funkcja2()
{
    // cos tu sie robi
}

i problem w tym ze opera nie wykonuje funkcja2(); w trakcie wykonania funkcja1();
Pod FF i MSIE6 nie mam tego problemu, konsola JS nie zwraca zadnego bledu.
Macie pomysl o co moze chodzic?
nospor
Skoro problem dotyczy js, czemu dajesz to na xml? PRzenosze

ps: do js uzywa sie innego bbcode niz php

edit: no tak, w kodzie co tu nam przedstawiles to faktycznie wiele rzeczy moze byc winne...
co do przenoszenia to zapraszam do regulaminu smile.gif
squid
nospor pisz prosze do ludzi jak przenosisz

Napisalem na formum AJAX poniewaz problem mam z ajax'em, jak sadze winny jest JS (ktory dla informacji niektoych jest czescia AJAx'a) i jesli sie okarze ze to nie JS jest winne lub nie samo to co zrobisz znowu przeniesiesz?

Co do BBcode to rozpedzilem sie i zanim zdazlyme poprawic do usunales
gekon
Mnie tam Opera nie robi takich rzeczy. Może coś masz dziwnie napisanego w tych funkcjach.
Zajec
Próbowałeś umieścić funkcja2 nad funkcja1?
squid
@gekon tak myslalem
Tak wyglada jedna z tych f-cji:
Kod
function handleServerNpfResult()
{
    // move forward only if the transaction has completed
    if (xmlHttp.readyState == 4)
    {
        // status of 200 indicates the transaction completed successfully
        if (xmlHttp.status == 200)
        {
            responseXml = xmlHttp.responseXML;
            xmlDoc = responseXml.documentElement;
            
            if ( xmlDoc.getElementsByTagName("npf")[0] )
            {    
                npf = xmlDoc.getElementsByTagName("npf")[0].firstChild.data;
                document.codecalcform.npf.value = npf;
                NPF = npf;
                calculatePF();
                // restart sequence
                setTimeout('handleServerNpfResult()', 1000);
            }
        }
        // a HTTP status different than 200 signals an error
        else
        {
            alert("There was a problem accessing the server: " + xmlHttp.statusText);
        }
    }
}

i wyglada na to, ze calculatePF(); sie nie wykonuje.

@Zajec tak to sprawdzielm na poczatku, najpierw definiuje calculatePF a potem te f-cje ktora zapodalem wyzej

moge dac wiecej kodu jak chcecie ale komu sie to bedzie chcialo przegladac

mam warzenie ze to jakis glupi blad bo pod FF i IE smiga az milo

Opera jest straszna, wg moich rozeznan
Kod
// move forward only if the transaction has completed
    if (xmlHttp.readyState == 4)
    {...

nie dziala, powoduje jakis blad i dlatego wywolanie tych fcji nie dziala, wiec wracamy do AJAXA i obslugi przez Opere, czy ta wredna przegladarka obsluguje readyState questionmark.gif
Zajec
Zachowaj swoje opinie dla siebie.

Jak webmaster głupi, to co Opera ma niby poradzić?

Zastanowiłeś się może, skąd "wredna" Opera ma wiedzieć, czym jest xmlHttp wykorzystane wewnątrz funkcji? Dla mnie to tylko jakaś nowa zmienna.
squid
@Zajec no wybacz ale opera jest wredna i nie jestem webmasterem tymbardziej za glupiego sie nie uwazam
to byl tylko kawalek kodu. Oczywiscie nie jestem (chyba) na tyle roztrzepany zeby uzywac czegos co nie zostalo stworzne stad wczesniej jest takie cos:
Kod
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject();
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject()
{
    // will store the reference to the XMLHttpRequest object
    var xmlHttp;
    // if running Internet Explorer
    if(window.ActiveXObject)
    {
        try
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e)
        {
            xmlHttp = false;
        }
    }
    // if running Mozilla or other browsers
    else
    {
        try
        {
            xmlHttp = new XMLHttpRequest();
        }
        catch (e)
        {
            xmlHttp = false;
        }
    }
    // return the created object or display an error message
    if (!xmlHttp)
        alert("Error creating the XMLHttpRequest object.");
    else
        return xmlHttp;
}

co jest zaczerpniete z pewnej ksiazki i jak na moja znajomosc JS wyglada calkiem dobrze. Opera wie czym czym jest xmlHttp bo serwer mi odpowiada i zawartosc sie aktualizuje tyle tylko ze wywolania innych f-cji nie dzialaja w Operze. Jeszcze raz powtarzam ze w konsoli bledow zadnych nie ma! Gdyby uzlyl obiektu przed jego stworzeniem to zakladam ze odpowiedni komunikat by mnie oswiecil.
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.