Autor Zpráva
quatzael
Profil
IE JS konzole mi hází tuhle chybu: Nedostatek místa v zásobníku
A ukazuje to na tuhle část kódu v jquery.js:
        // Handle $(DOMElement)
        if ( selector.nodeType ) {
            this.context = this[0] = selector;
            this.length = 1;
            return this;
        }

Na vině bude asi jiný script, který když dám pryč, tak to tu chybu neukazuje. Ale na jiné stránce ten script normálně funguje, tak nevím. V tom scriptu je toho docela dost, takže netuším kde by mohla být chyba.

Nenapadá prosím někoho něco?
juriad
Profil
quatzael:
Dost pravděpodobně dochází k nekonečné rekurzi. Pochybuji, že je chyba v jQuery, spíš je v tvém kódu, který jQuery volá. To, že to spadne zrovna tam, je náhoda (prozkoumej zásobník, zjistíš, že se určitá sekvence stack-framů opakuje).

Nemáš tam náhodou funkci, která volá sama sebe?
Chamurappi
Profil
Reaguji na quatzaela:
Zjevně se tu ptáš poprvé a nevíš, jak bys měl správně popsat problém, proto jsi neuvedl ani verzi Exploreru, ani verzi jQuery, ani jsi nedodal živou ukázku, nebo aspoň něco trochu specifického, z čeho by si šlo tipnout, v čem je chyba.

Na vině bude asi jiný script, který když dám pryč, tak to tu chybu neukazuje.
Ještě, že jsi nenapsal, o jaký jiný skript se přesně jedná, to by pak hrozilo, že najdeme příčinu.

Nenapadá prosím někoho něco?
Dej pryč ten jiný skript. Jak prosté :-)
quatzael
Profil
Chamurappi:
IE11, jQuery JavaScript Library v1.7.1
Ale to je myslím nepodstatné. Psal jsem, že to způsobuje jiný script (můj vlastní, který ale jinde funguje).

Dej pryč ten jiný skript. Jak prosté :-)
Ale já ho tam potřebuju..

juriad:
Dost pravděpodobně dochází k nekonečné rekurzi.
Trefil jsi to přesně!! Ještě v dalším scriptu mám odkaz na tu funkci v cyklu for, který se zřejmě neukončí. Musím to prozkoumat co se tam blíže děje.
Díky moc!!
Chamurappi
Profil
Reaguji na quatzaela:
Ale to je myslím nepodstatné.
Rozhodně není. Ve starším Exploreru může vzniknout nekonečná smyčka při procházení DOMu a ve starším jQuery byly chyby způsobující hlášku „Out of stack space“. Jak určuješ, co je podstatné a co zatajit?

mám odkaz na tu funkci v cyklu for, který se zřejmě neukončí
Domnívám se, že samotný nekonečný for tento problém způsobit nemůže. Příčinou bývá opravdu rekurze.
quatzael
Profil
Chamurappi:
Jak určuješ, co je podstatné a co zatajit?
Já se to nesnažím zatajit. Jen mi přišlo v tomto případě přišlo opravdu nepodstatné zmiňovat verze IE a jQuery, když mi to vedle na stránce normálně funguje.

juriad, Chamurappi:
Tak jinak. S tím cyklem for jsem se přehlídl. Volá se totiž hned po skončení cyklu. O rekurzní volání funkce taky asi nepůjde.

Trochu zjednodušeně ten můj script vypadá takto:

$("#button").click(function(){

$.ajax({
url: "/php/ajax.php",    
type: "POST",        
data: {a: "a",
          b: "b"},          
success: function (answer) {
for (val in defval)
{
//some code
}
my_function();
});    
});

Šlo o tu funkci my_function(), ve který jsem si myslel, že bude ten problém.
Ale samotný problém bude v tý klikací funkci ($("#button").click(function(){}). Ta se totiž z nějakého záhadného důvodu spouští hned po refreshi stránky (na button přitom neklikám). No a pak to vevnitř spustí tu my_function() a spadne to..


Tak ještě jinak. Click funkce se asi po refreshi nespouští, ale krachne to nejspíš na tom když se načítá ten script, kde je definovaná ta my_function(). Jenže bouchne to už při načítání (ne volání).
MartinP
Profil *
A ukážeš nám někdy ten skript, ve kterém je ta funkce?
_es
Profil
quatzael:
Trochu zjednodušeně ten můj script vypadá takto:
„Trochu zjednodušene“ - chyba môže byť len v nezjednodušenom tvare alebo aj niekde inde. To je nejaký supertajný skript nejakej tajnej služby, keď s tým robíš také tajnosti a nedal si odkaz na „živú“ ukážku?
quatzael
Profil
MartinP, _es:
Není to supertajný script. Ale jedná se o komerční projekt, který by se měl už v brzký době pomalu spouštět a nemůžu tady ukazovat, že to má nějaký chyby a že je to navíc celý zatím one man show..

Ten script všude jinde normálně bez problému běží. Musí tady být asi nějakej jinej problém, který způsobuje tu chybu při nahrávání..
asdfasdf
Profil *
quatzael:
Tak hodně štěstí při jeho hledání. Dík, že ses o své trable podělil.
Chamurappi
Profil
Reaguji na quatzaela:
Jen mi přišlo v tomto případě přišlo opravdu nepodstatné zmiňovat verze IE a jQuery, když mi to vedle na stránce normálně funguje.
Znamená to, že s jinou verzí jQuery to také nefunguje? A že verze Exploreru také nemá vliv?

že je to navíc celý zatím one man show
Možná spíš one man & one forum show. Ačkoliv v tomto případě jsme jen vrba, na kterou ses přišel vypovídat, protože šanci vyřešit problém jsi nám žádnou nedal.
quatzael
Profil
Chamurappi:
Znamená to, že s jinou verzí jQuery to také nefunguje? A že verze Exploreru také nemá vliv?
Předpokládám, že verze opravdu nemá vliv. Nemám jak zkoušet všechny verze IE. A už jsem psal, že ten stejný script mi funguje bez problému na jiné stránce (v jiné podsložce), takže mi přijde nesmyslný, aby v jedné verzi IE script fungoval u všech URL a v jiné verzi jenom u vybraných URL..??

Už jsem to ale vyřešil. Ten script byl ok, ale odkazoval na funkce, který jsem měl definovaný v jiným scriptu Dělal jsem tam nějaký změny a zapomněl jsem aktualizovat tady ty jiný funkce. Snažil jsem se i tak přijít na to, co to způsobovalo, ale chybu jsem nenašel. Je tam spletitá soustava funkcí, kdy se v jedné funkci volá jiná funkce a takhle několikrát. Takže tam nejspíše došlo k nějakému zacyklení. Takže ne přímá rekurze, ale spíše rekurze až po více volání funkcí v kruhu.
Asi něco takového: funkce_1-> funkce_2-> funkce_3-> funkce_4-> funkce_1
Ale jen si to myslím, přímo jsem to nenašel.

Možná spíš one man & one forum show.
To jo:o)

Ačkoliv v tomto případě jsme jen vrba, na kterou ses přišel vypovídat, protože šanci vyřešit problém jsi nám žádnou nedal.
Čekal jsem, že by někdo dokázal třeba vyjmenovat všechny možné příčiny a podle toho jsem mohl chybu hned odhalit. Přece nemůžu dopředu vědět, že mi všichni odpoví, že ty příčiny vyjmenovat nejde..
1Pupik1989
Profil
Smutné. Ještěže si na tady na fóru tak krátce. Zajímala by mě ta tajná funkce. Stejně jí jednou uvidím, třeba jen náhodou. Chápu pokud je to nějaká záležitost, s kterou poradí jen jeden člověk (jako mě). S rekurzivní funkcí (ať už dělá cokoliv) bych se netajil. Navíc rekurzivní funkce je naprosto zbytečná. Cyklem se dá krásně nahradit.

Možná ta funkce už teď mohla vypadat úplně jinak. Nicméně pokud spoléháš na svoje schopnosti, nechť ti jsou tvou referencí.
quatzael
Profil
1Pupik1989:
Teď nechápu co máš namysli. Ta funkce, která byla ve scriptu, o kterým jsem si původně myslel, že je příčinou toho problému využívá zase jiné funkce, které zase využívají jiné atd. Navíc ten script má skoro 500 řádků. To tady mám opravdu ukazovat? Navíc ta funkce v tom scriptu využívá zase jiné funkce z jiných scriptů, takže bych tady mohl zobrazit asi šest scriptů.

Ale už jsem psal, že je to vyřešeno.

Navíc rekurzivní funkce je naprosto zbytečná. Cyklem se dá krásně nahradit.
Ale já tam žádnou rekurzivní funkci záměrně nedávám. Četl jsi to vlákno pořádně? Já jsem psal, že to byla možná příčina toho problému. Ale tu rekurzi jsem tam stejně neobjevil (už jsem to potom neřešil, prostě jsem tam vložil aktualizovaný script a funguje to)
1Pupik1989
Profil
Muselo to být rekurzí, píše se to i na Microsoftím webu. Ta hláška je alternativa k chromáckému " Maximum call stack size exceeded", což se stane, pokud vznikne smyčka ve funkcích.

500 řádků ještě není tak hrozných, aby se v tom nedalo vyznat.

Rekurzivní funkce tam asi nebyla, blbě jsem to napsal. Nějaký "kolotoč" tam ale byl.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0