JavaScript: Janela abre no IE mas não no FF. Dicas?

19 respostas
MrDataFlex

alguém faz idéia pq esse cara não abre no Firefox ?

[em anexo]

Uso:

Valeu, galera!

19 Respostas

Javabuntu

cara se eu te falar que estou com mesmo problema, tenho uma função javaScript num sistema JSF… o script executa no IE e não roda no FF…

paulofernandesjr

eu desconfiaria disso

document.forms[‘form’][‘form:dataFinal’]

porque não usar

document.getElementById('dataFinal');
MrDataFlex

paulofernandesjr:
eu desconfiaria disso

document.forms[‘form’][‘form:dataFinal’]

porque não usar

document.getElementById('dataFinal');

amigo, não deu certo… :cry:

paulofernandesjr

o nome do seu campo é dataFinal desse jeito mesmo

tente dar um alert desse valor para ver o que ele retorna!!

abraço

MrDataFlex

oi amigo, primeiramente obrigado por estar me ajudando.

Só para ressaltar meu campo é um inputText do JSF:

o Alert :

document.getElementById('dataFinal') retorna null

document.forms['form']['form:dataFinal'] retorna HTMLInputElement (no firefox) e Object (no IE)

lembrando que no IE funciona o calendário, no FF não!..

o erro que verifiquei no [color=red]firebug[/color][size=16] [/size]

é o seguinte:

crossobj has no properties
Line 237

idéias amigão ???

agradeço toda ajuda …

:frowning:

paulofernandesjr

tente

document.getElementById("dataInicial");

se não der certo, me passe um link para ver ou posta o trecho do formulario

abraço

leosouzabh

verifique no html gerado para ver se realmente o nome do seu campo e este mesmo form:dataFinal
caso seja troque para document.forms[0].elements[‘form:dataFinal’]
tenta ai!!

vlwww

MrDataFlex

paulofernandesjr:
tente

document.getElementById("dataInicial");

se não der certo, me passe um link para ver ou posta o trecho do formulario

abraço

Não deu, o problema realmente está onde o Firebug chora:
crossobj has no properties
Line 237
[color=red] [/color]

leosouzabh:

Continou com o mesmo erro do firebug, amigo. O código gerado pelo JSF, pode ser constado aqui:

<input id="form:dataInicial" type="text" name="form:dataInicial" maxlength="10" onkeyup="maskDate(this, event)" size="10" />
<input type="submit" name="form:_id7" value="" onclick="clearFormHiddenParams_form(this.form.id);showCalendar(this, document.forms[0].elements['form:dataInicial'], 'dd/mm/yyyy', 'br', 1, 770, 100, null); return false;" class="BotaoCalendar" />

Obrigado aos amigos pela atenção…

leosouzabh

O problema parece não estar na chamada da função
essa linha 237 se encontra em qual arquivo JS?
creio que o problema se encontre nestes dois pontos no nome do campo

paulofernandesjr
document.getElementById(id_do_elemento);

esse comando acima faz com que o elemento seja “pegado” pelo ID dele

que no seu caso é

form:dataInicial

e não como comentavamos

dataFinal ou dataInicial

entendeu?

document.getElementById("form:dataInicial");

tenta assim…

abraço

MrDataFlex

paulofernandesjr:
document.getElementById(id_do_elemento);

esse comando acima faz com que o elemento seja “pegado” pelo ID dele

que no seu caso é

form:dataInicial

e não como comentavamos

dataFinal ou dataInicial

entendeu?

document.getElementById("form:dataInicial");

tenta assim…

abraço

Poxa amigo, idéia foi ótima… mas infelizmente não funcionou tbm! (Dessa vez nem no IE, rs)

:cry:

MrDataFlex

leosouzabh:
O problema parece não estar na chamada da função
essa linha 237 se encontra em qual arquivo JS?
creio que o problema se encontre nestes dois pontos no nome do campo

Tbm acho…

function hideCalendar() { 237 crossobj.visibility = 'hidden'; 238 if (crossMonthObj != null) crossMonthObj.visibility = 'hidden'; 239 if (crossYearObj != null) crossYearObj.visibility = 'hidden'; 240 showElement('SELECT'); 241 showElement('APPLET'); 242 } 243

Ai está a linha 237 que ocorre o erro!!!

E no código, podemos verificar que ela recebe o seguinte valor:

Logo após isso ele chama a função acima descrita que dá o erro…

E aí, eu estou estranhando este getElementById(‘calendar’), sendo que, no documento não há nenhum id calendar… alguém tem idéias??

paulofernandesjr

antes desse crossobj

coloca uma var

ficando dessa forma a linha

var crossobj=(dom)?document.getElementById('calendar').style : ie? document.all.calendar : document.calendar;

esta linha quer dizer a mesma coisa que isso

var crossobj;
if(dom){
     crossobj = document.getElementById('calendar').style;
} else {
     if(ie){
          crossobj = document.all.calendar;
     } else {
          crossobj = document.calendar;
     }
}

sendo que dom e ie são variaveis previamente definidas que indicam se o cara esta usando IE ou outro Navegador

abraço

paulofernandesjr

esse ID “calendar” deve ser criado via JavaScript, por isso que não encontra no seu codigo

abraço

MrDataFlex
paulofernandesjr:
esse ID "calendar" deve ser criado via JavaScript, por isso que não encontra no seu codigo

abraço

Observando o código do calendar.js, ele cria via JS..

if (dom) {
		for	(i=0;i<imgsrc.length;i++) {
			img[i] = new Image;
			img[i].src = imgDir + imgsrc[i];
		}
		
		document.write ('<div onclick="bShow=true" id="calendar" style="z-index:+999;position:absolute;visibility:hidden;"><table width="'+((showWeekNumber==1)?100:80)+'" style="font-family:Arial;font-size:9px;border: 1px solid #AAAAAA;" bgcolor="#EEEEEE"><tr bgcolor="#EEEEEE"><td><table width="100%"><tr><td style="padding:1px;font-family:Arial;font-size:10px;"><font color="#333333"><b><span id="caption"></span></b></font></td><td align="right"><a href="javascript:hideCalendar()"><img src="/saqs/imagens/calendar/close.gif" width="15" height="12" border="0" /></a></td></tr></table></td></tr><tr><td style="padding:2px" bgcolor="#ffffff"><span id="content"></span></td></tr>');
Ah sim paulo, e a variavel é criada, mas não ali extamente, e sim no cabeçalho, veja:
var crossobj, crossMonthOb...

PS.: Amigos, se vocês desejarem o código do calendário está anexado a este post..

muito obrigado pelo tempo perdido até aqui... continua o problema!

abraços

paulofernandesjr

tem algum link para que possamos visualizar o problema?

MrDataFlex

paulofernandesjr:
tem algum link para que possamos visualizar o problema?

Infelizmente é um site local… na intra aqui do trabalho

paulofernandesjr

putz…

se consegui-se simular somente o erro na Net

ficaria bem mais facil a ajuda!

Marky.Vasconcelos

Porque não usa o MyFaces ou o RichFaces (Prefiro o segundo)
Eles já tem o calendario pronto que funciona tanto no IE quanto no FF.

E é mais fáçil de utilizar:

<rich:calendar value="#{bean.objectCalendar.time}" pattern="dd/MM/yyyy" />
//Em caso do objeto ser uma instancia de Calendar voce precisa usar o objeto.time
//Caso for diretamente um date não precisa.
Criado 24 de março de 2008
Ultima resposta 31 de mar. de 2008
Respostas 19
Participantes 5