1

在ActionScript 3,我讓使用爲Javascript調用:ExternalInterface調用崩潰的瀏覽器

ExternalInterface.call('javascriptFunction'); 

如果在Javascript中,有一個錯誤或阻塞調用,整個瀏覽器將凍結。我無法在Firefox中使用Firebug進行調試,因爲通過回調進行的操作也會使瀏覽器崩潰。我如何去調試呢?

function javascriptFunction() { 
    alert('called from AS3'); 
    // OR 
    nonExistent.madeUp(); 
} 

在ActionScript 3,我做出的Javascript調用使用:

ExternalInterface.call('javascriptFunction'); 

如果在Javascript中,有一個錯誤或阻塞調用,整個瀏覽器將凍結。我無法在Firefox中使用Firebug進行調試,因爲通過回調進行的操作也會使瀏覽器崩潰。我如何去調試呢?

function javascriptFunction() { 
    alert('called from AS3'); 
    // OR 
    nonExistent.madeUp(); 
} 

您好!希望這個增加的信息將有助於保持這個問題活着:)。我正在使用Flash多媒體專業版8的Actionscript 2,並且我也遇到了Firefox的這個崩潰錯誤。我進口的flash.external.ExternalInterface,並且這兩個功能我用的都是

//confirmation dialog 
     function confirmationDialog(mesg:String) { 
      return ExternalInterface.call("confirm", mesg); 
     } 
    //alert dialog 
     function alertDialog(mesg) { 
      return ExternalInterface.call("alert", mesg); 
     } 

我的代碼調用每個函數總是看起來是這樣的..

//if i need an alert to continue on the page 
if (abc == ''){ 
    alertDialog("Message Here"); 
    return; 
} 
//if the user has the option of continuing or returning 
if (abc2 == 'hello') { 
    var response = confirmationDialog("New Message Here"); 
    if (colorChoise == false){ 
     return; 
    }else{ 
    //do nothing and continue forward 
    } 
} 

我與惠普的桌面上Windows 7,Firefox 5.0,IE9和Chrome 12.0.742.122。任何一次警報呼叫都會隨機導致Firefox凍結......實際上它通常會發生在一堆,它會連續凍結幾次(顯然每次都重新啓動Firefox),然後停止幾個小時並保持正常。它還沒有崩潰的IE9或Chrome,但我還沒有測試過它與Chrome廣泛。使用Firefox控制檯並沒有幫助,因爲Firefox只是一起崩潰。如果有人能夠說明這一點,那會很棒!

回答

0

您是否在其他瀏覽器中嘗試過使用像chrome或safari這樣的調試功能?如果它們不像Firefox一樣崩潰,這可能會讓你的問題更清楚。

你也可以嘗試另一個版本的Firefox,也許是在虛擬機上安裝的舊版本也許......也許這不會崩潰。

你也可以嘗試其他版本的閃光燈,看看是否修復它。

一般來說,在多個瀏覽器和多個版本的閃存上測試代碼將使您和您的網站用戶受益。

在許多版本中,許多插件版本都安裝在一堆小型虛擬機中,您可以在需要時測試運行代碼,或者在這樣的情況下運行代碼,這是很好的做法:)

如果這些都沒有幫助,忘記逐步通過,只是console.log從一切可能發生的事情,看看最後出現在瀏覽器崩潰之前 - 它應該至少給你一個暗示,出錯了,如果沒有,實際上是什麼讓它崩潰;)

2

我剛剛遇到這個錯誤,而且它似乎是Firefox本身的錯誤。它可能會在下一個補丁版本中得到補救。請諮詢Firefox Bug 648935

我會遵循Martin的建議,在IE9中,您可以使用F12調出「Developer Toolbox」來訪問控制檯,就像Firebug一樣。