我有一个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是什么,而是使用Constructor *恢复为代码段内的内容。因此,例如,在调试对象的 public 方法(例如sampleObject.getResource(“a”);)的间隔中,我一直在调试它。

痕迹回来像:
sampleObject = [Object] //Correct
sampleObject = [Object]

然后随机执行此操作:
sampleObject = function(){
        //swfobject dom load event
      }

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

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

尝试过的事情:
  • 代码仅启动一次(使用单个日期/随机字符串提醒一次)
  • 我确定了由于此问题而发生错误的位置,并包裹在try / catch中,尽管代码显然失败了,但并没有陷入困境。
  • 在不同的IOS版本上进行了尝试,除了IOS 7
  • 都很好

    * CONSTRUCTOR-不确定是否将其归类为构造函数,但这对我来说似乎就是如此。

    **很遗憾,我无法公开发布我的代码,因为它是商业项目的一部分,而且内容相当广泛。...但是,有什么建议或有人遇到过类似的问题吗?

    谢谢!

    最佳答案

    感谢您上面的所有评论。那为我指明了正确的方向。

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

    因此,解决我的问题的方法只是更改:

    //分配对象
    sampleObject = new sampleObject();



    //分配对象
    window.sampleObject = new sampleObject();

    10-08 12:25