山月

失败

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

父页面弹出一个显示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追加的方法。

posted on 2010-12-18 13:31  山|月  阅读(1144)  评论(0编辑  收藏  举报