- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- problema url javascript prelevato da xml
-
problema url javascript prelevato da xml
già il titolo è un casino, lo so!
vi spiego il mio problema sperando innanzitutto che possa spiegarmi bene
e magari che ci sia qualcuno che possa darmi una mano.
ho creato (per modo di dire,ho copiato codici qua e la) un menu scorrevole
con flash e xml.
l'actionscript preleva le immagini dal file xml e le mette nel menu.
nell'xml è associata ad ogni immagine anche il rispettivo url,solo che non è il classico
url http,bensì una chiamata ad una funzione javascript.
l'actionscript l'ho trovato in giro per il web e funziona in toto,tranne la funzione
che preleva l'url dal file xml.
ho fatto delle modifiche e prove di vario genere(puramente di fantasia)
ma mi da sempre "undefined".QUESTO è IL MODELLO DI FILE XML
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<immagini>
<foto>
<anteprima>pics/1.jpg</anteprima>
<link>javascript:sendEvent('playitem',0)</link>
</foto>......questo è l'actionscript(preso da un tutorial in rete e adattato):
function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
//definisco le variabili
anteprima = [];
link = [];
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
//aggiungo i parametri da inserire in xml
anteprima* = xmlNode.childNodes*.childNodes[0].firstChild.nodeValue;
link* = xmlNode.childNodes*.childNodes[1].firstChild.nodeValue;
thumbnails_fn(i);
}} else {
content = "file not loaded!";
}
}xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("video.xml");
/////////////////////////////////////
p = 0;
this.onEnterFrame = function() {
filesize = anteprima.getBytesTotal();
loaded = anteprima.getBytesLoaded();
if (loaded != filesize) {
preloader.preload_bar._xscale = 100*loaded/filesize;
} else {
preloader._visible = false;
if (anteprima._alpha<100) {
anteprima._alpha += 10;
}
}};
////////////////////////////////////funzione1 scroll delle miniature
function thumbNailScroller() {
// thumbnail code!
this.createEmptyMovieClip("tscroller", 1000);
scroll_speed = 10;
tscroller.onEnterFrame = function() {
if ((_root._ymouse>=thumbnail_mc._y) && (_root._ymouse<=thumbnail_mc._y+thumbnail_mc._height)) {
if ((_root._xmouse>=(hit_right._x-40)) && (thumbnail_mc.hitTest(hit_right))) {
thumbnail_mc._x -= scroll_speed;
} else if ((_root._xmouse<=(hit_left._x+40)) && (thumbnail_mc.hitTest(hit_left))) {
thumbnail_mc._x += scroll_speed;
}
} else {
delete tscroller.onEnterFrame;
}
};
}openurl = link.getURL; <------------------------------- sicuramente l'errore è qui
////////////////////////////////////funzione2 azioni delle miniature
function thumbnails_fn(k) {
thumbnail_mc.createEmptyMovieClip("t"+k, thumbnail_mc.getNextHighestDepth());
tlistener = new Object();
tlistener.onLoadInit = function(target_mc) {
target_mc._x = hit_left._x+(target_mc._width+5)*k;
target_mc.pictureValue = k;
target_mc.onRelease = openurl;<----------------------------- e anche qui
target_mc.onRollOver = function() {
this._alpha = 50;
thumbNailScroller();
};
target_mc.onRollOut = function() {
this._alpha = 100;};
};
image_mcl = new MovieClipLoader();
image_mcl.addListener(tlistener);
image_mcl.loadClip(anteprima[k], "thumbnail_mc.t"+k);
}
-
Ciao sigfunaris e benvenuto nel forum GT
Ti faccio un esempio con la funzione javascript per aprire un pop-up:
XML:
<link>javascript:newWindow=window.open('file.html','popper1','width=400,height=400');newWindow.focus(); void(0);</link>
Poi da Flash:
getURL(nodo XML corretto);
-
Se non funziona, prova a metterlo come stringa nell' XML:
<link>"javascript:newWindow=window.open('file.html','popper1','width=400,height=400');newWindow.focus(); void(0);"</link>
-
grazie per l'intervento.
ma il problema era un altro.
ho risolto in questo modo.innanzi tutto ho creato una funzione per aprire url in questo modo:
function openurl() {
if (p<(total-1)) {
p++;
if (loaded == filesize) {
picture.getURL(link[p]);<-----------------link è il nodo Xml contente l'url.} }
}
poi creo l'evento onRelease per ogni immagine
target_mc.onRelease = function() { p = this.pictureValue-1; nextImage(); openurl(); };
fin qui tutto ok. ma vale solo per gli url http:...
e comunque vengono aperti in un altra scheda.qui viene il problema.
io avrei bisogno che con il click sull'immagine venga richiamata una
funzione javascript con i vari argomenti.è chiaro che nella pagina html contente il flash c'è già la dichiarazione javascript.
conclusione: con questo codice mi apre una scheda bianca senza che il
javascript venga azionato.
mi scuso per i termini poco professionali,sono un dilettante.
spero di essere stato chiaro nella spiegazione. grazie e a presto.
-
fin qui tutto ok. ma vale solo per gli url http:...
Il metodo getURL di Actionscript richiede un indirizzo internet, non puoi prire files in locale utilizzando getURL.
Scua ma non ho capito se alla fine hai risolto :bho:
-
non ho risolto:
se faccio un menu statico
e assegno ad ogni immagine il geturl(javascript:funzione(argomenti...)
funziona
ma in questo caso prendendo il javascript da un file xml non funziona.mi spiego meglio:
nell'actionscript
getURL(nodoxml)nodo xml = javascript:funzione()
-
A questo punto devi mettere nell' XML solo gli argomenti javascript e poi concatenarli in actionscript chiamando la funzione.
-
infatti questa sarebbe proprio la soluzione ideale.
così nell'xml metterei solo l'argomento del javascript e sarebbe molto
piu semplice.
c'è un problema però...non so come si fa.non conosco la sintassi corretta.
ho provato a fare getURL(javascript:sendEvent + link[p]);
ma non va. mi da errori di sintassi
-
lo stesso vale per getURL(javascript:sendEvent('link[p]'));
perchè a quel punto link[p] me lo vede come argomento anzichè nodo xml.
-
Io avevo creato tempo fa una cosa simile per una galleria immagini.
Ti faccio vedere come ho concatenato :
getURL("javascript:newWindow=window.open('"+me.Pops[this.id]+"','popper1','width="+com.flepstudio.Manager.Widths[this.id]+",height="+com.flepstudio.Manager.Heights[this.id]+"');newWindow.focus(); void(0);");
Quello che vedi: com.flepstudio.Manager.Widths[this.id] e com.flepstudio.Manager.Heights[this.id] sono delle path a degli indici di array, per cui credo che ora tu ce la possa fare.
-
grazie per la disponibilità.
le ho provate tutte.
mi arrendo,non fa per me. :bho: