2009-06-16 13 views
0

Ich verwende AJAX in meinem JSF-Portlet. Wenn die Sitzung abläuft, werden wir annehmen, die folgende Meldung zu erhalten (dies ist die Antwort von AJAX-Request, wenn Sitzung abläuft)Firefox zeigt das Formular nicht an

Diese Seite verwendet wird, um Ihre Daten zu halten, während Sie für Ihre Anforderung autorisiert werden.

You will be forwarded to continue the authorization process. If this does not happen automatically, please click the Continue button below. 
<CONTINUE BUTTON> 

In IE 6 und 7 kann ich die Fortsetzung Schaltfläche sehen. Aber in Firefox sehe ich diesen Knopf nicht. Nur der Text ist sichtbar. Aber im Quellcode kann ich diesen Abschnitt sehen, aber es ist in Firebug abgeblendet. Ich habe den Screenshot auf http://img31.imageshack.us/img31/619/firefoxcontinue.jpg hochgeladen Idealerweise sollte es den Benutzer automatisch auf die Anmeldeseite weiterleiten, da AJAX das nicht umleiten kann , es zeigt nur die Antwort.So Continue-Taste muss innerhalb des Portlets angezeigt werden. Kann mir bitte jemand sagen, warum das HTML-Formular in Mozilla Firefox nicht angezeigt wird.

Danke

Ich habe eine Testseite erstellt. Das Problem ist da, wenn wir versuchen, das Formular in eine Tabelle einzufügen.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
    <TITLE> New Document </TITLE> 
    <META NAME="Generator" CONTENT="EditPlus"> 
    <META NAME="Author" CONTENT=""> 
    <META NAME="Keywords" CONTENT=""> 
    <META NAME="Description" CONTENT=""> 
</HEAD> 

<BODY> 
<script type="text/javascript"> 
    function insertAjax(){ 
     // alert('inside ajax'); 
     document.getElementById("wpsportlet").innerHTML='This page is used to hold your data while you are being authorized for your request.<br/><br/>You will be forwarded to continue the authorization process. If this does not happen automatically, please click the Continue button below.<form action="http://www.google.com" method="get" name="AUTOSUBMIT"><input type="submit" value="Continue"/></form>'; 

    } 

</script> 
<input type=button value="Submit" onclick="insertAjax();"> 
    <div id="wpsportlet"> 


    </div> 
</BODY> 
</HTML> 

Wenn ich das Formular in einer Tabelle verschachteln, wird das Formular in Firefox nicht angezeigt. Kann mir jemand bitte helfen, dafür zu arbeiten?

Antwort

1

Ihr erzeugten DOM ist ungültig. Zeichendaten (text) und < br>, < form> und < script> Elemente dürfen keine Kindelemente von Elementen sein - nur < tbody>, < thead> und < tfoot> Element darf (obwohl in XHTML können Sie < tr> haben Elemente auch).

Damit diese Elemente in einer Tabelle vorhanden sind, müssen sie vollständig innerhalb einer Tabellenzelle erscheinen.

Gegeben HTML, Firefox wird eine gute Arbeit der Kompensation von Autorenfehlern tun, aber wenn das gebrochene DOM mit JS generiert wird, umgehen Sie einige der Autokorrekturroutinen.

Nebenbei, Ihr Doctype (HTML + Transitional + No System-ID) löst Quirks mode - was im Allgemeinen nicht hilft.

Ich schlage vor:

  1. Wechseln Sie zu einem Doctype, die Standards-Modus
  2. Bestätigen Sie Ihre Markup
  3. Erstellen Sie die Inhalte, die Sie hinzugefügt werden mit JavaScript mit einfachem HTML statt
  4. Make dass löst validate
  5. Schreiben Sie JavaScript, um das DOM zu generieren, das Sie jetzt als gültig getestet haben
0

Warum fügen Sie keine Schaltfläche mit JavaScript hinzu, wenn die Antwort auf dem Bildschirm angezeigt wird?
diese Weise auf allen Browsern ... funktionieren sollte

function addButton() { 
    //Create an input type dynamically. 
    var element = document.createElement('input'); 

    //Assign different attributes to the element. 
    element.setAttribute('type', 'button'); 
    element.setAttribute('value', 'Continue'); 
    element.setAttribute('name', 'somename'); 
    element.setAttribute('id', 'someid'); 

    var foo = document.getElementById("fooBar"); 

    //Append the element in page 
    foo.appendChild(element); 
} 
+0

Danke für Ihre Antwort Dror. Das Problem ist, dass die obige Nachricht (von external security manager-sitemeinder) angezeigt wird, wenn die Sitzung abläuft. Ansonsten werden einige Suchergebnisse angezeigt. Ich muss überprüfen, ob die Antwort bestimmte Felder enthält, und dann das Element anfügen, wie Sie gesagt haben.Dies macht die Anwendung eng mit SiteMinder verknüpft. –

+0

Der Grund, warum das Formular nicht in der Tabelle angezeigt wird, ist, dass wir keine tr- und td-Tags haben. Wenn ich diese Tags hinzufüge, wird das Formular angezeigt. –

+0

Wir freuen uns, dass Sie sich darum gekümmert haben - schreiben Sie Ihre Antwort auf und akzeptieren Sie sie als Referenz für andere Personen, die möglicherweise Ihre Arbeit benötigen. – Dror

Verwandte Themen