Javascript Google Caja appendChild未更新Firefox中的form.elements

Javascript Google Caja appendChild未更新Firefox中的form.elements,javascript,firefox,google-apps-script,appendchild,google-caja,Javascript,Firefox,Google Apps Script,Appendchild,Google Caja,我正在使用谷歌应用程序脚本Web应用程序和HtmlService来提供内容,并尝试使用appendChild将输入元素动态添加到表单中。它在Chrome 24和IE 10中工作,但Firefox 19.0.2没有更新表单的元素列表 因此,它正确地显示在网页上,但在Firefox中,任何添加了appendChild到表单的输入元素都不是form.elements集合的一部分。值得注意的是,这个问题只有在使用Caja清理HTML时才会出现,如果我在其中使用相同的代码,它就可以正常工作 可以看到问题,

我正在使用谷歌应用程序脚本Web应用程序和HtmlService来提供内容,并尝试使用appendChild将输入元素动态添加到表单中。它在Chrome 24和IE 10中工作,但Firefox 19.0.2没有更新表单的元素列表

因此,它正确地显示在网页上,但在Firefox中,任何添加了appendChild到表单的输入元素都不是form.elements集合的一部分。值得注意的是,这个问题只有在使用Caja清理HTML时才会出现,如果我在其中使用相同的代码,它就可以正常工作

可以看到问题,这只是以下代码:

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

试验
功能打印(表格)
{
var str=“”;
对于(var v=0;v”+表单[v]。节点名+”+表单[v]。id+:”;
if(形式[v]。元素!=未定义)
对于(var w=0;w元素总数:“+document.forms[0].Elements.length;
返回;
}
函数onLoad()
{
var name=document.getElementById(“nameForm”);
var t=document.createElement(“输入”);
t、 name=“TestInput”;
//t、 id=“TestInput”;
姓名.儿童(t);
}
请输入您的姓名。
从我在这个主题上的发现来看,Firefox不喜欢无效的HTML;然而,据我所知,HTML输出是完全有效的。此外,由于它在JSFIDLE上工作,我认为问题在于Caja与我的HTML和Firefox交互的方式

还有,最后一件事,如果我在Firefox中检查表单元素并双击标记面板中的表单标记,然后单击关闭(取消编辑),Firefox就会检测到所有元素,一切正常。Firefox显示为HTML的内容并没有改变


非常感谢您的帮助

祝贺你,你发现了一个bug;表单的
.elements
在第一次访问后不会更新。我有