论坛首页 AJAX版 JavaScript

服务器转发时Html DOM的appendChild到底做了些什么?

浏览 202 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-05-13

有两页面:

页面一:WebForm1.aspx

有一个提交按钮和几个表单元素

当点击提交按钮时将页面转发至 WebForm2.aspx:

private void Button1_Click(object sender, System.EventArgs e)
  {
   Server.Transfer("WebForm2.aspx");
  }

页面二:WebForm2.aspx

页面加载时,遍历WebForm1.aspx提交过来的Form里的元素

重新生成<input>元素appendChild至document.body

以下是WebForm2.aspx的代码:

private void Page_Load(object sender, System.EventArgs e)
  {
   string forms="";
   for(int i=0; i<Request.Form.Count; i++)
   {
    forms+=Request.Form.Keys[i]+"|";
   }
   forms=forms.TrimEnd('|');
   string script=" var supforms='{0}'; ";
   script=string.Format(script,forms);

   string scr=@"
    var fnames=supforms.split('|');
    for(var i=0; i<fnames.length; i++){
     var f=document.forms[0];
     //if(f[fnames[i]!=undefined){
      var el=document.createElement('<input>');
      el.type='text';
      el.value=fnames[i];
      document.body.appendChild(el);      
     //}
    }
    alert(document.body.innerHTML);

   ";
   scr=script+scr;

   Page.RegisterStartupScript("k","<script>"+scr+"</script>");

  }

但是当追加完元素,在alter显示body的innerHTML后又弹出:

Internet Explorer 无法打开 Internet 站点 http://localhost/t/WebForm1.aspx  已终止操作。

的警告。然后就整个页面就是

无法显示网页

的状态。但是当追加完元素后点击alter弹出框确定按钮前界面上已经显示出了刚追加的元素,点击确定按钮之后才出现以上问题。
这究竟是什么原因?难道是appendChild保存了原始文档的引用,方法执行后还会去重新请求原来的WebForm1.aspx页面文档
而此时服务器已将页面转发至WebForm2.aspx导致引用不到原来文档吗?
appendChild方法到底做了些什么,还是我分析错了?请大家发表下高见!

  • Ff5e7d61-9398-35d2-911a-207f448a4279-thumb
  • 描述: 上文中提到的弹出警告对话框的截图
  • 大小: 195.1 KB
   
论坛首页 AJAX版 JavaScript

跳转论坛: