Newsgroup: it.comp.lang.javascript
Titolo: aprire una pagina da un frame ad un altro

Ciao a tutti
ho un problema con HTML e javascript: ho creato con firework un menů a
comparsa per aprire delle pagine da un frame ad un altro.
Nelle impostazioni di firework perň ci sono solo 5 opzioni per decidere il
frame di destinazione (self, top, parent, blank e parent) la cui sintassi
diventa per esempio (con blank):
fw_menu_0.addMenuItem("apri doc1.htm","window.open('doc1.htm', '_blank');");
Ho provato a sostituire _blank con il nome del frame in cui voglio
indirizzare l'apertura della pagina (es. principale) ma non funziona,
sapreste aiutarmi?
grazie Giova
 
--------------------------------
Inviato via 
http://usenet.libero.it

 voglio indirizzare l'apertura della pagina (es. principale)
open apre una nuova finestra del browser. Se vuoi aprire un nuovo documento
in una finestra già aperta devi usare location:
    top.nomeframe.location.href = 'doc1.htm'
Maurizio.

Grazie dell'aiuto Maurizio, ci ho provato in tutti i modi ma non riesco a
sostituire le righe (non infierire, lo so che sono una scarpa pazzesca, sono
2 giorni che sono bloccato su stà roba...:-((((, forse mi manca qualche
apice,
le righe da modificare dovrebbero essere queste 2:
fw_menu_0.addMenuItem ("apri doc1.htm","window.open('doc1.htm',
'_parent');");
  fw_menu_0.addMenuItem("apri doc2.htm","window.open('doc2.htm',
'_parent');");
come devo trasformarle?
GRAZIE per la pazienza Giova

--------------------------------
Inviato via 
http://usenet.libero.it

 '_parent');");
Qualcosa mi sfugge: non avevi detto che dovei aprire un nuovo doc in un
altro frame? Cosa c'entra _parent che rappresenta la pagina padre? Se deve
essere aperto in un altro frame dovrebbe essere cosě:
    fw_menu_0.addMenuItem("apri
doc2.htm","top.nomeframe.location.href=doc2.htm");
al posto di nomeframe devi mettere il nome che hai dato al frame.
Maurizio.


Scusa se ti rompo Maurizio ma proprio c'č qualcosa che non riesco a far
funzionare, ho sostituito le righe che mi hai dato in quelle precedenti ed
ho assegnato il nome del frame (bottomFrame) al posto di nomeframe, quando
lancio la pagina il menů a discesa in apertura funziona ma quando voglio
aprire il doc1.htm o doc2.htm nel bottomframe mi dice che doc1.htm non č
definito.
Devo cambiare altre impostazioni da altre parte?
Io ti posto tutto il codice della pagina, se č una cosa troppo grossa da
spiegarmi (nel senso che farei meglio a studiarmi le basi del Jscript e poi
ritornare qui), lascia stare, vedi tu
grazie
 giova
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function fwLoadMenus() {
  if (window.fw_menu_0) return;
  window.fw_menu_0 = new Menu("root",142,22,"Georgia, Times New Roman, Times,
serif",15,"#000000","#000000","#ff6600","#00ff33");
 
 fw_menu_0.addMenuItem("apri
doc1.htm","top.bottomFrame.location.href=doc1.htm");
  fw_menu_0.addMenuItem("apri
doc2.htm","top.bottomFrame.location.href=doc2.htm");
   fw_menu_0.addMenuItem("apri
doc3.htm","top.bottomFrame.location.href=doc3.htm");
   fw_menu_0.addMenuItem("apri
doc4.htm","top.bottomFrame.location.href=doc4.htm");
   fw_menu_0.fontWeight="bold";
   fw_menu_0.hideOnMouseOut=true;
 
  fw_menu_0.writeMenus();
} // fwLoadMenus()
//-->
</script>
<script language="JavaScript1.2" src="fw_menu.js"></script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>frame 1 </p>
<p>
  <script language="JavaScript1.2">fwLoadMenus();</script>
  <img name="ComandoApertura" src="ComandoApertura.gif" width="250"
height="100" border="0" usemap="#m_ComandoApertura">
  <!-- fwtable fwsrc="Senza nome" fwbase="ComandoApertura"
fwstyle="Dreamweaver" fwdocid = "742308039" fwnested="0" -->
  <map name="m_ComandoApertura">
    <area shape="poly" coords="0,3,247,3,247,98,0,98,0,3" href="#"
onMouseOut="FW_startTimeout();"
onMouseOver="window.FW_showMenu(window.fw_menu_0,259,9);" >
  </map>
</p>
<p>&nbsp; </p>
<p>&nbsp; </p>
</body>
</html>


Il problema è che tutto dipende da cosa fa questa fantomatica addMenuItem()
che NON è una function nativa di JavaScript ma è una delle diavolerie che
inseriscono questi "bellissimi" programmi che creano siti web...
Se vuoi un aiuto, quindi, dovresti almeno postare la function in questione
(ed eventuali altre associate al click della voce del menù)...a meno che non
trovi qualcuno (Maurizio?) che conosce questo firework e sa cosa fa questa
function

= e.pageY-10) {
				setTimeout('window.ActiveMenu.Menu.onMenuItemAction();', 2);
			}
		}
		a.clicked = false;
		if (a.Menu.bgImageOver) {
			a.background.src = a.Menu.bgImageUp;
		}
	} else if (window.ActiveMenu && FIND("menuItem0")) {
		if (a) {
			a.style.backgroundColor = a.saveColor;
			if (a.hilite) a.hilite.style.visibility = "hidden";
			if (a.Menu.bgImageUp) {
				a.style.background = "url(" + a.Menu.bgImageUp +")";;
			}
		}
	}
	if (!mouseup && window.ActiveMenu) {
		if (window.ActiveMenu.Menu) {
			if (window.ActiveMenu.Menu.hideOnMouseOut) {
				FW_startTimeout();
			}
			return(true);
		}
	}
	return(true);
}
function PxToNum(pxStr)
{ // pxStr == 27px, we want 27.
	if (pxStr.length > 2) {
		n = Number(pxStr.substr(0, pxStr.length-2));
		return(n);
	}
	return(0);
}
function hideChildMenu(hcmLayer) {
	FW_clearTimeout();
	var l = hcmLayer;
	for (var i=0; i < l.Menu.childMenus.length; i++) {
		var theLayer = l.Menu.childMenus[i];
		if (document.layers) {
			theLayer.visibility = "hidden";
		} else {
			theLayer = FIND(theLayer);
			theLayer.style.visibility = "hidden";
		}
		theLayer.Menu.hideChildMenu(theLayer);
	}
	if (l.childMenu) {
		var childMenu = l.childMenu;
		if (document.layers) {
			l.Menu.FW_showMenu(null,null,null,childMenu.layers[0]);
			childMenu.zIndex = l.parentLayer.zIndex +1;
			childMenu.top = l.top + l.parentLayer.top + l.Menu.menuLayer.top +
l.Menu.menuItemHeight/3;
			if (childMenu.left + childMenu.clip.width > window.innerWidth) {
				childMenu.left = l.parentLayer.left - childMenu.clip.width +
l.Menu.menuLayer.left + 15;
				l.Menu.container.clip.left -= childMenu.clip.width;
			} else {
				childMenu.left = l.parentLayer.left + l.parentLayer.clip.width +
l.Menu.menuLayer.left -5;
			}
			var w = childMenu.clip.width+childMenu.left-l.Menu.container.clip.left;
			if (w > l.Menu.container.clip.width)
				l.Menu.container.clip.width = w;
			var h = childMenu.clip.height+childMenu.top-l.Menu.container.clip.top;
			if (h > l.Menu.container.clip.height) l.Menu.container.clip.height = h;
			l.document.layers[1].zIndex = 0;
			childMenu.visibility = "inherit";
		} else if (FIND("menuItem0")) {
			childMenu = FIND(l.childMenu);
			var menuLayer = FIND(l.Menu.menuLayer);
			var s = childMenu.style;
			s.zIndex = menuLayer.style.zIndex+1;
			if (document.all) { // ie case.
				s.pixelTop = l.style.pixelTop + menuLayer.style.pixelTop +
l.Menu.menuItemHeight/3;
				s.left = s.pixelLeft = (menuLayer.style.pixelWidth) +
menuLayer.style.pixelLeft -5;
			} else { // zilla case
				var top = PxToNum(l.style.top) + PxToNum(menuLayer.style.top) +
l.Menu.menuItemHeight/3;
				var left = (PxToNum(menuLayer.style.width)) + PxToNum(menuLayer.style.left)
-5;
				s.top = top;
				s.left = left;
			}
			childMenu.style.visibility = "inherit";
		} else {
			return;
		}
		window.activeMenus[window.activeMenus.length] = childMenu;
	}
}
function hideActiveMenus() {
	if (!window.activeMenus) return;
	for (var i=0; i < window.activeMenus.length; i++) {
		if (!activeMenus[i]) continue;
		if (activeMenus[i].visibility && activeMenus[i].Menu) {
			activeMenus[i].visibility = "hidden";
			activeMenus[i].Menu.container.visibility = "hidden";
			activeMenus[i].Menu.container.clip.left = 0;
		} else if (activeMenus[i].style) {
			var s = activeMenus[i].style;
			s.visibility = "hidden";
			s.left = -200;
			s.top = -200;
		}
	}
	if (window.ActiveMenuItem) {
		hideMenu(false, false);
	}
	window.activeMenus.length = 0;


mammamia...
consiglio: se vai su 
www.jsdir.com
 trovi menů di tutti i tipi e 100.000
volte piů semplici e leggibili
Comunque sembra fare un eval, quindi quanto scritto dovrebbe andare piů o
meno bene: il primo argomento č semplicemente quello che leggi, nel secondo
c'č scritta la azione da compiere:
"top.frames['nomeframe'].location.href='pagina.htm'"

 mi dice che doc1.htm non č definito.
Non definito? Questo č il messaggio preciso?
Il primo sospetto che mi viene in mente č che doc1.htm non si trova nella
cartella in cui lo script va a cercare. Ma cosě č difficile fare una
diagnosi. Bisogna vedere lo script.
Maurizio.

Lo ha postato (cosa fai, ti prendi una settimana di ferie per l'analisi?)
:-))
Terribili questi programmi, io ho visto in funzione dreamweaver, ottimo se
vuoi fare 1 sito "al volo", ma se devi farci una qualsiasi modifica (o
decidi perché sei un pazzo di capire cosa fa)...tanti auguri

 ha
scritto:

Ok, mi sa che seguirò il consiglio di scaricarmi un menù già fatto...
grazie tantissime a entrambi del tempo speso e della pazienza avuta!!!!
giova


 Grazie, ti posto la function, è molto lunga però...
Lo script conferma, grosso modo, quello che si intuiva: il primo parametro è
la voce che deve andare sul menu, il secondo sono le istruzioni che devono
essere eseguite al click.
La parte che ci interessa dello script è questa:
    if (!l) return;
    hideActiveMenus();
    if (l.action) {
    eval("" + l.action);
    }
cioè viene fatto un eval() delle istruzioni passate.
Riguardando quello che avevo scritto forse mancavano le virgolette attorno a
doc2.htm:
    fw_menu_0.addMenuItem("apri
doc2.htm","top.nomeframe.location.href='doc2.htm'");
Maurizio.