[ lenny @ 15.10.2003. 12:07 ] @
Treba iz JavaScript-a da pozovem komponentu iz DLL-a. Ovo sam uradio na ovaj način:
<html>
<head>
<script ...>
var o = new ActiveXObject("NekiSoft.Bookmarks");
o.Initialize();
..
</script>
</head>
...

A pitanje je sledeće: da li je moguće nekako doturiti ovaj iskreirani objekat (o) drugim HTML stranicama, na koje se stiže preko linkova, ili na koje se šalje sadržaj forme sa ove HTML stranice?
Ako jeste, kako?
Ili se mora pozivati ActiveXObject na svakoj stranici?
[ -zombie- @ 15.10.2003. 15:45 ] @
možeš recimo da napraviš nevidljivi frejm u kome ćeš da čuvaš referencu ka tom activex objektu.

znaš ono, prva stranica ima FRAMESET sa dva frejma, jedan širine/visine 0 (ili 1) pixel, a drugi glavni u kome radiš sve ostalo (ideš kroz stranice) osim što u ovom prvom čuvaš objekte.

jeste hack, ali ja ne znam za bolji način.
[ lenny @ 16.10.2003. 09:04 ] @
Citat:
-zombie-:
možeš recimo da napraviš nevidljivi frejm u kome ćeš da čuvaš referencu ka tom activex objektu.


Ok, ali kako pristupam objektu iz drugog frejma?
[ noviKorisnik @ 16.10.2003. 09:59 ] @
parent.frames[redni_broj_ili_ime_frejma].id_objekta
[ lenny @ 16.10.2003. 10:31 ] @
Citat:
noviKorisnik:
parent.frames[redni_broj_ili_ime_frejma].id_objekta


Hmm, ovo nisam uspeo da primenim. Pretpostavljam da je problem u tome, što ovaj objekat uopšte nije deo HTML stranice, već se samo generiše u zaglavlju, pozivom funkcije ActiveXObject().

Znači ima dva frejma, levi se zove leftFrame, u njemu stoji:
<html>
<head>
<script ...>
var o = ActiveXObject("NekiSoft.Bookmarks")
o.Initialize(); // ovo dosad radi ok
</script>
</head>
<body> ...

U drugom frejmu (koji se zove rightFrame) sam probao sledeće:
<html>
<head>
<script ...>
document.write( parent.frames[leftFrame].o.GetRootPath() )
</script>
</head>
<body> ...

Pa sam kasnije probao i sa:
document.write( top.leftFrame.o.GetRootPath() )

I nikako mi ne radi (problem nije u ActiveX objektu).
[ noviKorisnik @ 16.10.2003. 10:51 ] @
... ako smem da malo bodem naslepo, jer već duže nisam JScriptovao

Problem je naći referencu do objekta.

Probaj da instanciraš objekat sa: document.o = ..., pa da ga referenciraš sa: parent.frames[leftFrame].document.o

Bolji predlog je da nađeš prvo na koji način ćeš ga referencirati u dokumentu gde si ga kreirao, pa tek nakon toga rešenje reference primeniš na frejmove. Znači, ako ga u njegovom dokumentu možeš pozvati sa self.document.o trebalo bi da radi onaj gornji predlog, inače neće raditi...

[ lenny @ 16.10.2003. 12:28 ] @
Citat:
noviKorisnik:
Problem je naći referencu do objekta.


Da li je moguće ubaciti ActiveX objekat između <OBJECT> tagova, recimo:

<object id=id_objekta type="all" declare classid="clsid:EB3A1E33-1830-44C8-A549-0E2527A649E5"></object>

Kako da se ispravno inicijalizuje objekat, da bih imao isti efekat kao sa pozivom ActiveXObject()? Dali se može koristiti PROGID umesto CLSID?
[ noviKorisnik @ 16.10.2003. 12:38 ] @
Ne znam, od objekata sam ubacivao samo Flash filmove i to bez nekih posebnih modifikacija izuzev prosleđivanja promenljivih Flashu kroz url string. Sorry
[ -zombie- @ 16.10.2003. 20:13 ] @
Citat:
noviKorisnik:
Probaj da instanciraš objekat sa: document.o = ..., pa da ga referenciraš sa: parent.frames[leftFrame].document.o



da, ovo je dobar način. mada ne mora sa document. može i običa globalna promenjiva u jednom frejmu. npr u nevidljivom frejmu imaš:

Code:

    <script language="JavaScript">
        var globalna_referenca;
        function inicijalizacija() {
            window.globalna_referenca=17; 
            // ili već new ActiveXObject('bla bla..');
        }
    </script>


naravno, pozoveš inicijalizaciju, a iz drugog frejma ovome pristupaš sa recimo:
parent.frames[nevidljivi].globalna_referenca

jednostavno...