我正在處理一個旨在跟蹤使用本地共享對象的用戶的項目。用戶首先訪問頁面A,該頁面具有一個植入了本地共享對象的嵌入式.swf。我知道它通過測試我自己的flash cookies來工作。ActionScript3(AS3)外部接口調用javascript/jquery函數不起作用
在訪問頁面B時,另一個嵌入式.swf將嘗試檢索flash cookie,並在cookie存在時調用AJAX函數。頁面B是我遇到的麻煩。在這個網頁上嵌入了一個.swf對象,以及一個AJAX函數。以下代碼是頁面B的HTML。它包含AJAX腳本以及嵌入式.swf。
<!DOCTYPE html>
<html lang="en">
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
function databaseAndemail(){
$.get('http://www.mywebsite.com/databaseAndemail.php');
}
</script>
</head>
<body>
<object width="1" height="1">
<param name="CheckLSO" value="http://www.mywebsite.com/CheckLSO.swf">
<embed src="http://www.mywebsite.com/CheckLSO.swf" width="1" height="1">
</embed>
</object>
</body>
問題不在於AJAX函數,也不在PHP腳本中,因爲我知道這是有效的。問題可能在於檢查LSO的.swf腳本。這就是所謂的CheckLSO.swf AS3腳本:
public function Main():void
{
//Check for a LSO
var myLocalData:SharedObject = SharedObject.getLocal("myData");
if (myLocalData.data.uname != null){ //LSO exists, so call AJAX function to update database and send email.
if (ExternalInterface.available){
ExternalInterface.call("databaseAndemail");
}
};
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
我會包括AS3腳本將這裏的餅乾供你參考(再次,我測試過這一個,它的工作原理):
public function Main():void
{
// Create a new SharedObject
var myLocalData:SharedObject = SharedObject.getLocal("myData");
// Save data to the SharedObject
myLocalData.data.uname = "ERE";
myLocalData.flush();
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
總而言之,我認爲出於某種原因,Javascript函數沒有被外部接口調用。我知道cookie被設置,我知道AJAX的作品,我知道PHP腳本的作品(我沒有包括PHP,這似乎超出了這個問題的範圍)。兩個.swf腳本都被調試。我在Flash 4中使用了FlashDevelop。這些都是非常簡單的腳本,所以我想不出任何可能會出錯的東西。有任何想法嗎??
感謝您的回答!不幸的是,它仍然無法正常工作。我使用了你的兩個建議。 – Kev
無賴。嘗試添加警報('我的功能工作!');作爲databaseAndemail()中的第一件事。如果你得到一個彈出窗口,你就會知道該呼叫正在工作,而其他事件則會導致你的麻煩 – Ribs
固定! :)我嘗試使用swfObject動態發佈,而不是靜態發佈,並出於某種原因它的工作。所以你是對的:這是嵌入問題。我沒有改變我的代碼中的其他任何東西。將您的答案標記爲已接受! – Kev