2013-10-21 95 views
2

我有一個web應用程序,在所有的桌面瀏覽器和移動設備上都表現良好,但是自從IOS 7遇到了一個奇怪的問題。奇怪的Javascript 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未定義...

事情嘗試:

  • 代碼只會啓動一次(警報會以單個日期/隨機字符串觸發一次)
  • I確定由於此問題而發生錯誤的位置,但是儘管代碼明顯失敗,但它並未進入捕獲。
  • 試圖在不同的IOS版本中,所有罰款除了IOS 7

*構造函數 - 不知道這是否被列爲一個構造函數,但是那是什麼,在我看來。

**不幸的是,我不能公開發布我的代碼,因爲它是商業項目的一部分,並且相當廣泛....但是有什麼建議或者有人有過類似的問題嗎?

謝謝!

+0

不知道爲什麼會出現問題,但爲什麼您爲類和實例使用相同的名稱?這簡直令人困惑。 – Barmar

+0

你真的會這麼叫兩次嗎?第二個電話不應該工作。 – bfavaretto

+0

它的東西,我已經繼承,因此不知道其根本原因,但它的作品,並已爲所有主流瀏覽器和移動瀏覽器做到現在...因此,我的混淆 – Bynho

回答

0

感謝上述所有意見。這表明我朝着正確的方向前進。

問題似乎是IOS 7似乎隨機丟失了javascript對象的範圍,並且因爲werent沒有專門將sampleObject分配給窗口,所以它始終不工作。

因此解決我的問題是簡單地改變:

//將對象分配 sampleObject =新sampleObject();

//將對象分配 窗口。sampleObject = new sampleObject();