2

我有一个 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 中,但是尽管代码显然失败了,但它并没有进入 catch。
  • 在不同的IOS版本上试过,除了IOS 7都很好

*CONSTRUCTOR - 不确定这是否被归类为构造函数,但在我看来就是这样。

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

谢谢!

4

1 回答 1

0

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

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

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

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

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

于 2013-10-23T15:15:00.437 回答