gpt4 book ai didi

javascript - ActionScript3 (AS3) 对 javascript/jquery 函数的外部接口(interface)调用不起作用

转载 作者:行者123 更新时间:2023-11-28 20:17:04 26 4
gpt4 key购买 nike

我正在开发一个项目,旨在跟踪使用本地共享对象的用户。用户首先访问页面 A,该页面具有嵌入的 .swf,其中包含本地共享对象。我通过测试我自己的 flash cookies 知道它是有效的。

访问页面 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);
}

我将在此处包含设置 cookie 的 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);
}

总而言之,我认为由于某种原因,外部接口(interface)没有调用 Javascript 函数。我知道cookie已设置,我知道AJAX可以工作,并且我知道PHP脚本可以工作(我没有包括PHP,看起来它超出了这个问题的范围)。两个 .swf 脚本均已调试。我将 FlashDevelop 与 Flex 4 一起使用。这些脚本非常简单,所以我想不出还有什么可能出错的地方。有什么想法吗??

最佳答案

可能是脚本访问设置。在嵌入时,尝试包含参数allowscriptaccess:“always”。如果没有它,外部接口(interface)调用将会失败。

<object width="1" height="1">
<param name="CheckLSO" value="http://www.mywebsite.com/CheckLSO.swf">
<param name="allowscriptaccess" value="always">
<embed src="http://www.mywebsite.com/CheckLSO.swf" width="1" height="1"></embed>
</object>

更好的是,使用 swfObject 2 嵌入您的 swf。

SwfObject

关于javascript - ActionScript3 (AS3) 对 javascript/jquery 函数的外部接口(interface)调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19055402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com