2

Я использую приложение Google Apps Script Web App и HtmlService для обслуживания содержимого, и я пытаюсь динамически добавлять элементы ввода в форму с помощью appendChild. Он работает в Chrome 24 и IE 10, но Firefox 19.0.2 не обновляет список элементов для формы.Google Caja appendChild не обновляет form.elements в Firefox

Таким образом, он отображается правильно на веб-странице, но в Firefox любые элементы ввода, добавленные с помощью appendChild, не являются частью коллекции form.elements. Стоит отметить, что эта проблема возникает только в том случае, если HTML обрабатывается с помощью Caja, если я использую тот же код в jsfiddle, он отлично работает.

Вопрос можно увидеть here, который только следующий код:

<html> 
     <head> 
     <title>Test</title> 
     <script type="text/javascript"> 
      function print(form) 
      { 
      var str = ""; 
      for(var v = 0; v < form.length; v++) 
      { 
       str += "<br>" + form[v].nodeName + "." + form[v].id + ": "; 
       if(form[v].elements != undefined) 
       for(var w = 0; w < form[v].elements.length; w++) 
       { 
        str += form[v].elements[w].name + ", "; 
       } 
      } 
      return str; 
      } 

      function submitForm() 
      {   
      document.getElementById("nameLookupHelp").innerHTML = (print(document.forms)) + "<br>Total Elements:" + document.forms[0].elements.length; 
      return; 
      } 

      function onLoad() 
      { 
      var name = document.getElementById("nameForm"); 
      var t = document.createElement("input"); 
      t.name = "TestInput"; 
      //t.id = "TestInput"; 
      name.appendChild(t); 
      } 
     </script> 
     </head> 
     <body onload="onLoad()"> 
     <form name="nameForm" id="nameForm"> 
      <input name="nameLookup" id="nameLookup"> 
      <input type="button" id="bntNameForm" onclick="submitForm(this)" value="Lookup"> 
      <div class="" id="nameLookupHelp">Please enter your name.</div> 
     </form> 
     </body> 
    </html> 

Из того, что я нашел на эту тему, Firefox не нравится недопустимый HTML; однако, исходя из того, что я могу сказать, вывод HTML отлично. Более того, поскольку он работает на jsfiddle, я предполагаю, что проблема должна быть связана с тем, как Caja взаимодействует с моим HTML и Firefox.

Кроме того, последнее, если я проведу элемент формы в Firefox и дважды щелкните по тегу формы на панели разметки, затем нажмите (отменить редактирование), затем Firefox обнаружит все элементы, и все работает нормально. Однако Firefox показывает, что HTML не меняется.

Благодарим вас за помощь.

ответ

1

Поздравляем, вы обнаружили ошибку; .elements формы никогда не обновляется после первого обращения к ней. У меня есть fixed it in Caja r5321.