ie 被呼叫方不可用并已消失

故障现象

在B/S Web系统中,管理员重复在同一台机器上登录功能,会导致脚本报错。具体表象为:Java Script Error 被呼叫方(服务器[不是服务器应用程序])不可用并已消失。所有连接均无效。没有执行呼叫。或没有执行权限

实现技术

一般在B/S系统中,在管理员登录打开主操作页面窗口之前,从实现技术上,一般是首先打开登录页面窗口,登录验证成功后,才打开一个全屏主操作页面窗口,在这里为了后面说明的方便,我们可以称打开主操作页面窗口之前的登录窗口,为引导窗口;同时,被打开的主操作页面窗口具有同样的窗口名字,一般同名的IE窗口用来控制同一台机器只有一个账户登录,也就是说即使两个管理员在同一台机器上登录,也只有一个主窗口被打开。如果这时,我们假设另外一个管理员也在同一台机器上登录,他首先会手动打开了登录窗口,然后提交数据,在后期登录流程通过B/S系统JavaScript window.open脚本代码打开主操作页面窗口时,由于IE检测到具有同名的IE窗口已经存在,所以实际发生的行为就是冲掉前面已经存在的同名窗口内容,重新加载新的数据,而不是新创建一个新窗口。这样的特性,也经常被用来控制同一个机器上仅允许一个管理员登录。

登录过程形式化

引导窗口1----->主窗口(同名窗口)--->加载完成后关闭引导窗口(通过opener属性) 引导窗口2----->主窗口(同名窗口)--->加载完成后关闭引导窗口(通过opener属性) 从形式化的过程来看,两个在同一台机器上登录的管理员过程,虽然引导窗口是不同的,但是最终呈现给用户的主操作页面窗口,由于是同名的,管理员的主操作页面窗口一定只有一份存在。

故障原因(也令人迷惑)

在IE的窗口属性中特殊有opener这样一个属性,记录其打开窗口,即创建此窗口的父窗口。在管理员重复登录这个场景下,IE浏览器就发生一个令人迷惑的问题,即在第二个登录过程发生后,虽然主窗口的内容已经被替换为第二个管理员的数据,但是主窗口的opener属性有很大可能还是引导窗口1,并没有得到更新,不是指向引导窗口2!!由于从概念上来讲,opener应该是引导窗口2才符合程序员对此过程的假定。所以,由于这个条件的不满足,程序原来的假定就出现了破裂,一定会出现水土不服的,而且错误通常会稀奇古怪,呵呵!这样,加载完成后在通过opener属性关闭引导窗口时,由于opener属性引用一个"尸体",所以前面的脚本报错故障就不难解释了! 补充一下,根据一个朋友的交流和研究,在此种场景下window脚本对象里面中的其它属性也有可能是Invalid的。 另外,报的脚本报错提示"被呼叫方",这主要是IE两个窗口间通讯数据时体现为一个远程过程调用或者内部消息通讯机制的原因,具体内部机制有待以后进一步研究。

解决办法

在引导窗口中,通过window.open返还的主窗口句柄,更新其opener属性 伪码
chilid = window.open(url,"main");
child.opener = window.self/注意,这里赋值chili.opener属性,也有非常小的几率涉及到多线程访问的难题/

附带其它研究结果

<script>脚本块,在出现脚本错误后其后面的所有脚本都不会被解析,但是范围仅是此script块,不会跨script块

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,087评论 18 139
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 98,457评论 9 468
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,544评论 25 707
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,625评论 1 92
  • 早晨一路小奔跑去学校的时候,遇到了一个熟悉的奶奶,她笑盈盈地说:你是不是胖了啊!我调皮地和她调侃了几句,就赶紧去上...
    鹿笙Healer阅读 849评论 5 8