2012-09-25 51 views
1

我有大約1000個SWF文件,都是通過ExternalInterface調用JavaScript函數。將ExternalInterface調用捕獲到一個不存在的函數中

我沒有訪問這些文件的源文件,也無法編輯它們。

我的基本問題是,他們都調用不同的功能,Flash AS3腳本掛起,直到它從函數獲得響應。

我希望做的是檢測從JavaScript中的SWF文件中調用的函數,然後在運行中創建函數,但是,爲了做到這一點,我需要檢測被調用的函數第一。

有什麼辦法可以在JavaScript中做到這一點?

回答

0

不,這在JavaScript中不可行。

+0

真的嗎?所以不可能檢測到一個'ReferenceError'並且不使用'try {} catch(){}'來處理它呢?甚至不用自定義事件處理程序,通過原型化ReferenceError對象? –

+1

當錯誤被拋出時已經太晚了。 – ThiefMaster

+0

所有錯誤應該是可捕獲的,在actionscript 3中使用UncaughtErrorEvent或在javascript中使用window.onerror。 –

0
  1. 我不知道有多少變化有,但它是使用反編譯器在幾個SWF的只是看哪個ExternalInterface的電話被稱爲一個選擇嗎?嘗試網上反編譯http://www.showmycode.com/

  2. 可以使用UncaughtErrorEvent http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/UncaughtErrorEvent.html

  3. 我dont'tknow如果JavaScript引發錯誤趕上從Flash未定義的錯誤?你能趕上從JavaScript過錯誤,使用window.onerror https://developer.mozilla.org/en-US/docs/DOM/window.onerror

-1

你能解釋一下你有多大的控制在SWF文件和被它你想實現什麼?

這些是AS2還是AS3? 是否有加載這些SWF文件的主要SWF文件?

我在看文檔,看起來使用ExternalInterface.marshallExceptionsUnhandledErrorEvent一起,您可能會檢測到來自Flash端的未知函數調用。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html#marshallExceptions

+0

正如我在問題中所述,我無法訪問SWF源文件,我只需處理它們在JavaScript上調用的任何EI函數。 –

+0

沒有源代碼並不意味着您無法控制SWF文件。例如,如果您將它們加載到另一個SWF中,則可以使用ExternalInterface.marshallExceptions。此外,還有幾個工具可用於檢查/修改SWF字節碼。所以,我不明白你的投票。 –

相關問題