有两页面:
页面一: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方法到底做了些什么,还是我分析错了?请大家发表下高见!