JavaScript-在open页面调用父页面Js方法的问题
在一个系统的主帧MainFrame中加载了页面A(A页面中有个JS方法叫做A(),来获得当前页面的相关数据)中用window.open打开一个新页面B,在B页面中需要通过...
在一个系统的主帧MainFrame中加载了页面A(A页面中有个JS方法叫做A(),来获得当前页面的相关数据)中用window.open打开一个新页面B,在B页面中需要通过opener.A()来调用父页面的A()方法,一般情况下是没有问题的,但是一旦MainFrame帧中加载了新的页面,比如C,这是在弹出来的B页面调用opener.A()就会报错,这个报错可以理解,因为他的父页面A已经不存在了,被C页面代替了。其实这个问题是可以解决的,只是要改一下系统框架和数据组织结构,来绕道解决,但这样有点麻烦,我想问的就是在不改变系统设计和代码的情况下,怎样才能有效解决这个问题呢?
展开
4个回答
推荐于2016-04-16 · 知道合伙人数码行家
关注
展开全部
当弹出子窗口使用的是 window.open();
方法时可以在子窗口使用:
1 . parant.method();
2 . opener.method();
两个方法调用父窗口的方法!
当弹出窗口使用的是模态窗口 window.showModelDialog();方法时可以在子窗口使用:
1 . var parentObj = window.dialogArguments;
parentObj.method();
方法调用父窗口的方法!
建议使用方法时考虑清楚弹出窗口究竟是什么模式的对话框,如果不清楚建议使用:
try{
opener.method();//弹出的是普通窗口
}catch(e1){
try{
var parentObj = window.dialogArguments;//弹出的是模态窗口
parentObj.method();
}catch(e2){//有可能父窗口没有这个方法!
}
方法时可以在子窗口使用:
1 . parant.method();
2 . opener.method();
两个方法调用父窗口的方法!
当弹出窗口使用的是模态窗口 window.showModelDialog();方法时可以在子窗口使用:
1 . var parentObj = window.dialogArguments;
parentObj.method();
方法调用父窗口的方法!
建议使用方法时考虑清楚弹出窗口究竟是什么模式的对话框,如果不清楚建议使用:
try{
opener.method();//弹出的是普通窗口
}catch(e1){
try{
var parentObj = window.dialogArguments;//弹出的是模态窗口
parentObj.method();
}catch(e2){//有可能父窗口没有这个方法!
}
展开全部
window.opener.A = window.opener.A || function() {
alert('父窗口已被刷新,请重新打开本窗口')。
}
alert('父窗口已被刷新,请重新打开本窗口')。
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以试试jQuery或者Ext JS,都可以动态导入JavaScript外部文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
window.opener
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询