A JavaScript Fancier

伟大的javascript技术研究中...

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  304 随笔 :: 0 文章 :: 479 评论 :: 0 Trackbacks


您的系统登陆后是否是全屏的?如果是,您是否发现当保持你已经登入的系统全屏窗口后再次通过系统登录时仍然是一个全屏窗口,或者直接全屏窗口变成白板?或者提示“拒绝访问”的js错误?

偶所在公司的一些项目都出现了这种问题,当一个系统在一个机器上同时登录多个帐号(弹出多次全屏窗口)时,新开的窗口会将之前的全屏刷成白板。开始以为是IE的bug,没多在意,之后发现很多人都提这个问题,于是决定去探究下是否有解决办法。想到window.open弹出全屏,首先想到是否窗口名冲突,开始查看window.open的调用,找到如下代码:
workspace = window.open(targetURL, "workspace""fullscreen=0,menubar=0,toolbar=0,directories=0,location=0,status=1,scrollbars=0");

想想不可能是workspace变量冲突,因为它只是一个页面级变量,新开的页面不会和之前页面定义的变量冲突,在看发现了window.open的第二个参数workspace,这个参数的意义之前我没有在意过,以为没有什么意义,突然感觉这个应该是代表窗口的名字,以便程序可以通过该名字来识别该窗口。如果定义了这个名字,那么在第二次弹出窗口时因为能找到workspace窗口所以并没有重新打开而是在workspace页面内重新写内容了。完全正确。之后偶特意写代码测试了。当然,这样就好解决了,只要把这个参数省略或定义不同的名字就可以解决这个问题。

看下面的测试:
window.open的第二个参数定义了相同名字

window.open的第二个参数定义了不同名字

posted on 2007-09-27 09:21 Yemoo'S JS Blog 阅读(1329) 评论(0)  编辑 收藏 引用 所属分类: javascript技巧总结
只有注册用户登录后才能发表评论。