Firefox не отображает форму

Я использую AJAX внутри портлета JSF. Когда сеанс истекает, мы предположим, что получим следующее сообщение (это ответ AJAX-запроса при истечении сеанса)

Эта страница используется для хранения ваших данных во время авторизации вашего запроса.

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

В IE 6 и 7 я вижу кнопку «Продолжить». Но в Firefox я не вижу эту кнопку. Только текст виден. Но в исходном коде я вижу этот раздел, но он окрашен в Firebug. Я загрузил скриншот на http://img31.imageshack.us/img31/619/firefoxcontinue.jpg В идеале это должен автоматически перенаправлять пользователя на страницу входа, так как AJAX не может перенаправить это, он просто отображает ответ. Кнопка «Продолжить» должна отображаться внутри портлета. Может кто-нибудь, пожалуйста, скажите мне, почему HTML-форма не отображается в Mozilla Firefox.

благодаря

Я создал тестовую страницу. Проблема возникает, когда мы пытаемся вставить форму внутри таблицы.

<!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>

Если я вложу форму внутри таблицы, форма не будет отображаться в Firefox. Может кто-то, пожалуйста, помогите работать для этого.

ajax,firefox,jsf,

0

Ответов: 2


1 принят

Ваш сгенерированный DOM недействителен. Элементы символов (текст) и <br>, <form> и <script> могут не быть дочерними элементами элементов - может быть только элемент <tbody>, <thead> и <tfoot> (хотя в XHTML вы можете иметь <tr> элементы тоже).

Чтобы эти элементы существовали внутри таблицы, они должны отображаться полностью внутри ячейки таблицы.

Учитывая неработающий HTML, Firefox будет неплохо компенсировать ошибки автора, но когда сломанная DOM генерируется с помощью JS, вы обходите некоторые из подпрограмм автокоррекции.

В стороне, ваш Doctype (HTML + Transitional + No системный идентификатор) запускает режим Quirks - что обычно не помогает.

Я предлагаю:

  1. Переключитесь на Doctype, который запускает режим стандартов
  2. Подтвердите свою разметку
  3. Создайте контент, который вы добавляете с помощью JavaScript, используя простой HTML вместо этого.
  4. Убедитесь , что Validate
  5. Напишите JavaScript для создания DOM, который вы сейчас тестировали как действительный

0

Почему вы не добавляете кнопку с использованием JavaScript, когда ответ отображается на экране?
Этот способ должен работать на всех браузерах ...

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);  
} 
Аякса, светлячок, JSF,
Похожие вопросы