tidliibums ([info]tidliibums) rakstīja [info]koderi kopienā,
@ 2005-04-26 15:24:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
biki no DHTML
Vai kāds nevar ieteikt kādu labu/vienkāršu veidu, kā tikt galā ar sekojošo:

ar javascript tiek taisīts vaļā logs, un tajā ielādēts kaut kāds html:

w = window.open("secondfile.html");

Un tālāk gribas caur DOM pamanipulēt tā loga saturu, darīt kaut ko tādu kā

w.document.getElementById("elementToChange").style.visibility = "hidden";

Bet problēma ir tā, ka tās otrās komandas izpildes brīdī lapa var vēl nebūt paspējusi līdz galam ielādēties, un attiecīgi DOMs var nebūt vēl uzbūvēts.

Vai varat ieteikt kādu labu veidu, kā "sagaidīt" lapas ielādēšanos? Vēlams tādu, kurā nevajadzētu aiztikt secondfile.html (likt tajā skriptus).


(Ierakstīt jaunu komentāru)


[info]aiks
2005-04-26 16:53 (saite)
galīgi nepretendēju uz javascript zinoša cilvēka statusu, bet es darītu sekojoši (ja tas vien ir iespējams protams). Tajā brīdī, kad mēs ar window.open() attaisam logu, uzreiz piereģistrējam tam dokumentam onLoad event handleri (notikumturi) kā kādu funkciju izsaucēj skriptā.

(Atbildēt uz šo) (Diskusija)


[info]src
2005-04-26 16:55 (saite)
mmh, izklausās visnotaļ sakarīgi

(Atbildēt uz šo) (Iepriekšējais)


[info]kits
2005-04-26 19:06 (saite)
es arī nepretendēšu uz to pašu, bet gribētos domāt, ka prātīgāk ir aiztikt window.onload, nevis document.onload..

(Atbildēt uz šo) (Iepriekšējais)

interpretējamās valodas un blackout-i :)
[info]tidliibums
2005-04-26 19:57 (saite)
Paldies, droši vien būs tā jāmēģina, lai arī patīkamāk būtu, ja būtu kaut kas tāds kā window.loaded=true|false.

Un laikam jau kits taisnība, ka window.onload varētu būt labāks par document.onload.

Bet sapratu, ka galīgi nesaprotu vairs, kādā kontekstā izpildīsies tas, ko ieraksta tajā onload - ja referencētā funkcija atrodas citā logā, tad konteksts būs no funkcijas definīcijas atrašanās vietas, vai arī no onload metodes saimnieka (t.i., izsaukuma vietas)?

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)

Re: interpretējamās valodas un blackout-i :)
[info]grrr
2005-04-26 20:22 (saite)
Popravķe, ja muldu, bet man liekas kaut kā tā...
// atzīstu, pēdējo reizi JS nopietnāk mocīju pirms gada laikam, tapēc sintakse jau, bet pamuldēt gribas :)

function whenopens()
{
alert("this should happen when second window loads");
}

w = new Window();
// js bija taada opcija vispaar?? jeb window bija globalais unikalais variablis?

w.onLoad = whenopens;
w.open("secondhtml.html");

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)

Re: interpretējamās valodas un blackout-i :)
[info]tidliibums
2005-04-27 01:21 (saite)
Nu jā, apmēram tā (vienīgi tas new Window() bik citādi laikam jāraksta, jo Window nav JS core object).

--f1.html--
...
function o(){ alert('hi!'); }
function f(){ w = window.open("f2.html"); w.onload = o; }
...
<a href="javascript: f();">click me!</a>
...
---
Šis pasākums uz FF un Operas izmet to alert, bet uz IE otrs logs atveras, bet alerta nav (un arī nekādas kļūdas nav).

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)

Re: interpretējamās valodas un blackout-i :)
[info]grrr
2005-04-27 08:17 (saite)

Cik atceros FF un IE bija savādāki eventu nosaukumi.

Tātad, w.onload = ... vietā kaut kas cits.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)

mistērija turpinās
[info]tidliibums
2005-04-27 20:08 (saite)
Tas būtu pārāk vienkārši. onload arī priekš IE ir pareizi, un savā logā arī lieliski strādā, tikai cross-window gadījumā pazūd bez vēsts.

Labi cilvēki kā alternatīvo risinājumu ieteica skatīties w.document.readyState, laikam pagaidām būs jāpaliek pie tā.

(Atbildēt uz šo) (Iepriekšējais)


Neesi iežurnalējies. Iežurnalēties?