父页面弹出一个显示HTML内容的模态对话框:
父页面:var ret = window.showModalDialog(url[, args][, features]);
子页面:
接收参数:var arg = window.dialogArguments;
返回参数:window.returnValue = staff;
1、当子页面关闭时,父页面ret才能得到值,即ret = staff。如果返回的值是一个数组,则在父页面中,使用ret.each(function(item){});时JS出错:can't execute code from a freed script.必须使用原始的for循环,原因可能是由于JavaScript此时传的是引用,数组此时在内存中还在子页面中(待查JavaScript中变量在内存的存储情况与prototype中数组的each实现)。
2、子页面中的链接不弹出新窗口或form提交后返回本窗口,在子页面的head中加上:<base target="_self" />
3、数组声明:
var arr = new Array(); 此种方式在IE8下调试时数组带有length属性。
var arr = [];此种方式在IE8下调试时不带length属性。
附加:测试时父页面调用ret.each()出错与上面不符:Object doesn't support this property or methd,这是由于子页面没有引入prototype.js,所以声明的数组只是JavaScript原生数组,只带有原生的方法或属性,传到父页面后也能用原生方法而不能用prototype追加的方法。