注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一车,一房,一个温暖家

10万左右的车,80平方的房子,这是我奋斗的暖暖的家

 
 
 

日志

 
 

引用 工作记录 解决前台javascript错误   

2015-06-20 15:07:55|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自yangguosheng.here《工作记录 解决前台javascript错误》

问题:后台在js文件中加入变量parent.a,parent.b,parent.c.parent.d。但是在前台其他js文件中,取不

到parent.a值和parent.b值。能取到parent.c值和parent.d值。


处理:调试后台代码,执行4个变量都赋值了。(同时发现前台页面中parent还是它自己)。怀疑在js中被

在其他地方被冲了。随便增加了一个变量parent.e ,值和 parent.a的值一样。仍然取不到。应该不是在其

他地方被冲了。
同事李永飞把parent.a的值写死。前台竟然能取到值了。(我思考的方向是调试和不调试有什么区别,事实证

明,我想错了,程序中总能找到原因的,没有灵异事件。)其实当时就应该能想到,因为能取到值的一个是

写死的值,另一个是配置中读取的。而取不到的都是从session中取的。因此造就应该想到session中取不到

值。
李永飞看置值的逻辑,发现有四种情况置值。当前情况下有两种,一种是BaseApp.JS.Login2011.js,一种

是BaseApp.JS.Index2011.js。调试的时候只执行一次BaseApp.JS.Index2011.js。了解到第一次访问首页时

会执行BaseApp.JS.Login2011.js。这时session中没有值,然后BaseApp.JS.Login2011.js会缓存在服务器

端,之后再访问也不会执行了。到此为止问题搞清楚了。原来前台取值是从BaseApp.JS.Login2011.js中取

的。此事只有写死的,从配置中取的有值。从session中取没有值。但是调试,由于有缓存,不再执行

BaseApp.JS.Login2011.js。

 

 

需要测试的几个问题
1,什么时候parent = 自己。

2,单纯的html页面,js中建立变量parent.a。是变量名就叫“parent.a”,还是在parent中建立“a”变量。

parent中a

3,A.js中加载B.js。那么B.js中的parent就是A吗?parent因该是说的页面而不是js吧。

页面

 

 



opener 
opener用于在window.open的页面引用执行该window.open方法的的页面的对象。例如:A页面通过

window.open()方法弹出了B页面,在B页面中就可以通过opener来引用A页面,这样就可以通过这个对象来对

A页面进行操作。
 
parent 
parent用于在iframe,frame中生成的子页面中访问父页面的对象。例如:A页面中有一个iframe或frame,那

么iframe或frame中的页面就可以通过parent对象来引用A页面中的对象。这样就可以获取或返回值到A页面

中。
 


parent指父窗口,在FRAMESET中,FRAME的PARENT就是FRAMESET窗口。   
opener指用WINDOW.OPEN等方式创建的新窗口对应的原窗口。  
    


parent是相对于框架来说父窗口对象  
opener是针对于用window.open打开的窗口来说的父窗口,前提是window.open打开的才有。

  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018