奇怪的Javascript IOS 7问题

时间:2013-10-21 15:11:57

标签: javascript ios ios7

我有一个在所有桌面浏览器和移动设备上运行良好的Web应用程序,但是自IOS 7以来我遇到了一个奇怪的问题。

示例:

我正在设置像

这样的对象
(function(){
  //CONSTRUCTOR*
  sampleObject= new function(){
    alert("loaded constructor "+ new Date().getTime()); //only outputted once 
    //swfobject dom load event
  }


...//functions and propeties related to sampleObject

})();

//ASSIGNING THE OBJECT
sampleObject = new sampleObject();
alert("finished assigning object "+ new Date().getTime()); //only outputted once 

问题:

在ios 7上,似乎随机丢失了sampleObject,而是使用构造函数*恢复到代码段内的内容。所以例如,我一直在调试它,我在我的对象上调用一个公共方法,如sampleObject.getResource(“a”);

这些痕迹会像以下一样回归:

sampleObject = [Object] //Correct
sampleObject = [Object]

然后随机执行此操作:

sampleObject = function(){
        //swfobject dom load event
      }

这基本上是构造函数中的代码*。

这会导致我的代码抛出引用错误,因为我没有定义我在整个过程中使用的公共属性/方法,例如getResource ...

尝试的事情:

  • 代码仅启动一次(使用单个日期/随机字符串警告一次)
  • 我确定了由于这个问题而发生错误的地方,包裹了一个try / catch但是虽然代码明显失败但它没有进入捕获。
  • 在不同的IOS版本上尝试过,除了IOS 7之外都很好

* CONSTRUCTOR - 不确定这是否被归类为构造函数,但这就是我所看到的。

**遗憾的是我不能公开发布我的代码,因为它是商业项目的一部分并且非常广泛......但是有任何建议或有任何人有类似的问题吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢上面的所有评论。这指向了我正确的方向。

问题似乎是IOS 7似乎随机丢失了javascript对象的范围,因为我们并没有专门将sampleObject分配给窗口,所以它一直没有工作。

因此解决我的问题只是改变:

//指派对象 sampleObject = new sampleObject();

//指派对象 window.sampleObject = new sampleObject();