Newsgroup: it.comp.lang.javascript
Titolo: problemi solo con Mozilla

Ho uno script che mi serve come motore di ricerca.
Il quale tempo addietro mi e' stato "ottimizzato" attraverso questo ng dal 
buon EMA...
Ebbene ora lo sto usando in una struttura basata su frameset.
Il tutto funziona bene pero solo su Explorer!
Su mozilla si pianta e se vado a chiedere spiegazioni al debugger mi segnala 
questo errore
 win = parent.pagina("","","scrollbars=yes,resizable=yes");
il tutto e visibile al link
http://pejone.altervista.org/aframe.htm
se mettete come query "silvia" dovrebbe trovare una pagina mentre se mettete 
qualcos'altro dovrebbe dare "risultati 0"
(i links alle pagine non sono attivi ma dovrebbe bastare per darvi un'idea)
GRAZIE per i consgli

  win = parent.pagina("","","scrollbars=yes,resizable=yes");
Il file HTML principale contiene un FRAME con nome "pagina". Per cui
pacendo parent.pagina ti riferisci proprio a quel frame, e non ad
una funzione.
Gaetano

  win = parent.pagina("","","scrollbars=yes,resizable=yes");
Non ho molto tempo; ero perň curioso perché un errore simile non ha senso
scritto cosě; cosě sono andato a vedere e risulta
Error: parent.pagina is not a function
 Source File: 
 
http://pejone.altervista.org/alaterale.htm
 Line: 34
Guardando sempre al volo il frameset creato mi sembra errato, quindi non
capisco perché dici che funziona con IE...sei a sinistra (frame
"laterale"), parent dovrebbe essere la pagina contenitrice di tutto, che
NON contiene una function denominata "pagina"...
Se č in quella centrale devi "entrarci"
(parent.frames['pagina'].pagina(...))
Se invece con quel parent.pagina intendi proprio il frame pagina allora la
sintassi usata IMHO non ha senso.
Con IE se scrivo DI CORSISSIMA Silvia funziona, altrimenti mi rimanda a
un'altra pagina e compare "accesso negato"....
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

forse ho posto male il problema.
Io devo far si che i risultati appaiono sul frame "di destra" ovvero quello 
chimato "pagina"
Come posso fare? 



allora:
per riferirti al frame di destra basta usare top.frames["pagina"]
Da qui in poi dipende cosa significa "i risultati appaiono sul frame di
destra"...
a) devi ricaricare il frame di destra?
top.frames["pagina"].location.reload();
b) devi richiamare un'altra pagina?
top.frames["pagin"].location.href="tuapagina.htm";
c) la form ha una proprietą target, magari target="destra" fa al caso tuo?
(attributo credo rimosso da xhtml 1.1)
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

Allora vediamo se riesco a spiegarti...
Il codice che "compilava" la pagina con i risultati era questo:
page="<html><head><title>Risultati della ricerca</title></head><boy><body 
bgcolor='#d52323'><body link='white'><body text='white'><body 
vlink='white'><center><table border=0 cellspacing=10 width=100%>";
function search(frm) {
win = window.open("","","scrollbars=yes,resizable=yes");
win.document.write(page);
ecc ecc ecc...
Io avevo sostituito la riga win= window.open(ecc ecc...
con
win = parent.pagina("","","scrollbars=yes,resizable=yes");
e su IE funziona restituendomi una pagina con i risultati ipertestualizzati 
che poi una volta cliccati presentano il risultato all'interno dello stesso 
frame "di destra" ovvero quello chiamato "pagina".
Su Mozilla Firefox invece NON funziona e se vado a spulciare il debug mi 
ritrovo il messaggio
parent.pagina is not a function
ho provato a riscrivere la riga nel modo che mi hai suggerito ma ancora su 
IE, tutto ok e su Firefox niente...
Ora forse sono io che non riesco a cogliere i tuoi gentili suggerimenti ma 
sta di fatto che non riesco a farlo funzionare....
GRAZIE. 

 Il codice che "compilava" la pagina con i risultati era questo:
[CUT]
Mi pare una gran porcata il fatto che IE accetti una sintassi simile...
prova con top.frames['pagina'].document.write(page);


 prova con top.frames['pagina'].document.write(page);
Ripensandoci (mai usato in vita mia document.write) se la pagina è già
caricata mi sa che occorre esplicitare l'open-close:
...document.open();...document.write(...);...document.close();


Allora Cristiano, inanzitutto ti ringrazio per la tua gentile 
disponibilita', tuttavia nonostante la tua collaborazione non riesco a far 
funzionare il tutto.
Riepilogando la "cosa" funziona cosi:
c'e' una struttura a 3 frames
L'intestazione aintesta.htm
il frame laterale che contiene il cosidetto motore di ricerca alaterale.htm
e il frame per i contenuti denominato pagina
il tutto visibile su 
http://pejone.altervista.org/aframe.htm
Usando IE se tu inserisci una qualsiasi query sul form del mdr avrai come 
risultato una pagina che ti dice "corrispondenze trovate:0"
Se invece inserisci per esempio "silvia" troverai una pagina con un link 
(peraltro inattivo)
Ora questa pagina con i risultati viene "creata" dal javascript che ti 
riporto integralmente qua sotto...
Il mio problema e' che su Firefox qualsiasi cosa scriva sul form NON SUCCEDE 
NIENTE!!!
E col debugger mi da:
Errore: parent.pagina is not a function
File sorgente: 
http://pejone.altervista.org/alaterale.htm
Riga: 34
Spero di essermi spiegato bene stavolta e se sarai cosi' gentile da far si 
che possa ottenere i risultati sperati ti RINGRAZIO davvero TANTO
<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>laterale</title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
var item = new Array();
// "Nome pagina","percorso","Titolo 
pagina","parole,chiave,Key,Words","Descrizione e Commenti"
c=0; item[c]=new Array("romina.htm","images/","Foto di Romina","romina","La 
foto Romina di Treviso");
c++; item[c]=new Array("silvia.htm","images/","Foto di Silvia","silvia","La 
foto di Silvia di Prato");
page="<html><head><title>Risultati della ricerca</title><link rel=stylesheet 
href='salsi.css' type ='text/css'></head><body><div id='content' 
align='center'><body link='red'><body text='red'><body 
vlink='blue'><center><table border=0 cellspacing=10 width=100%></body>";
function search(frm) {
win = parent.pagina("","","scrollbars=yes,resizable=yes");
win.document.write(page);
txt = frm.srchval.value.toLowerCase().split(" ");
fnd = new Array(); total=0;
for (i = 0; i < item.length; i++) {
fnd[i] = 0; order = new Array(0, 4, 2, 3);
for (j = 0; j < order.length; j++)
for (k = 0; k < txt.length; k++)
if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
fnd[i] += (j+1);
}
for (i = 0; i < fnd.length; i++) {
n = 0; w = -1;
for (j = 0;j < fnd.length; j++)
if (fnd[j] > n) { n = fnd[j]; w = j; };
if (w > -1) total += show(w, win, n);
fnd[w] = 0;
}
win.document.write("</table><br>Corrispondenze 
trovate:"+total+"<br></body></html>");
win.document.close();
}
function show(which,wind,num) {
link = item[which][1] + item[which][0];
line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a><br>";
line += item[which][4] + "<br></td></tr>";
wind.document.write(line);
return 1;
}
</SCRIPT>
</head>
<body bgcolor="white">
<body onload="document.forms[0].srchval.focus()">
<form method=get action="javascript:void(0)" onsubmit="search(this); return 
false;">
<input type=text name=srchval value="" size="20"><input type=submit 
value="Cerca">
</form>
<div align="left">
  <table border="0" cellpadding="3" cellspacing="3" style="border-collapse: 
collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  </table>
</div>
<p>link 1</p>
<p>link2</p>
<p>link 3</p>
</body>
</html> 

 win = parent.pagina("","","scrollbars=yes,resizable=yes");
Qua č rimasto uguale a prima...e, ripeto, č strano funzioni con IE...
Potresti, cosě a culo, sostituire quanto sopra con 
 win=top.frames['pagina'];
 win.document.open();
Magari basta questo, prova un po'...
p.s. ricordati sempre che devono essere sempre nello stesso dominio


Oh, Cristiano ti ha mai detto nessuno che sei un......
GENIO!!!!
Funziona!!
GRAZIE infinite...
Pero' e' strano che del codice scritto male funzioni su IE e non su altri 
browser...
grazie ancora..
Adriano 

 browser...
Ricorda sempre che di secondo nome explorer fa "mangiasassi"... :-)
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 Ricorda sempre che di secondo nome explorer fa "mangiasassi"... :-)
In verita' sarebbe quello il suo nome di battesimo. L'hai poi cambiato
all'anagrafe per non farsi riconoscere, ma gli e' servito a poco..
-- 
ZER0
~ The Tangent Universe collapsed 5945 days, 8 hours, 44 minutes and 39 seconds ago.
on air ~ "Maki Kimura - Beyond The Bounds"

 all'anagrafe per non farsi riconoscere, ma gli e' servito a poco..
:-)
Ma hai visto che porcata? parent.pagina('','','scrollbars=1') e, da quel
che ho capito, restituisce un riferimento alla window "pagina"...a naso
direi che sta ignorando la parentesi e tutto quel che vi č contenuto:
parent.frames['pagina']==parent.pagina==parent.pagina('quelcazzochevoglio','e','anche','con','n','parametri')=true;
Mah


 che ho capito, restituisce un riferimento alla window "pagina"...
Mah, mi pare strano.. altrimenti dovrebbe esser valido anche un codice del
tipo:
window('','','scrollbars=1')
Cmq considera che IE prende per buona anche una proprieta' href gestita
come funzione..
-- 
ZER0
~ The Tangent Universe collapsed 5945 days, 9 hours, 2 minutes and 57 seconds ago.
on air ~ "BOA - Duvet (Lain Theme)"