现在的位置: 首页 > 综合 > 正文

腾讯 360浏览器 调用js问题

2013年05月15日 ⁄ 综合 ⁄ 共 564字 ⁄ 字号 评论关闭

     最近做的一个flash程序要上线了,QA测试出某些浏览器显示有问题,主要是一些基于IE内核的国内浏览器,例如360等。最后调试发现问题是从js获取参数都是空,也就是ExternalInterface.call都返回null。网上找到的一个简单的方法是延迟初始化,就像下面这样:

    

		public function TestMain()
		{
			super();
			
			setTimeout(startInit, 50);
		}
		
		private function startInit():void
		{
			var p:Object = ExternalInterface.call("getParam");
			trace(p);
		}

  改完后基本正常了,过了几天代码改了改又返回空了。我把js和as代码看了半天都想不通为什么。最后想起来构造函数执行之前可能做了其他初始化,然后检查了一下成员变量,发现很多成员都是 var aa:AA = new AA(); 这样的结果是构造函数的延迟逻辑还没执行,很多类已经开始了初始化,而且某些构造函数里面可能调用了ExternalInterface.call, 最后导致startInit里面的ExternalInterface的call返回还是null。我把代码重构了一下,将字段初始化都放到构造函数里面,测试OK。总而言之,代码的结构还是很重要的。

抱歉!评论已关闭.