ActionScript3 (AS3) 外部接口调用 javascript/jquery 函数不起作用
ActionScript3 (AS3) External Interface call to javascript/jquery function not working
我正在从事一个旨在跟踪使用本地共享对象的用户的项目。用户首先访问页面 A,该页面具有植入本地共享对象的嵌入式.swf。我知道它通过测试我自己的闪存饼干来工作。
访问页面 B 时,另一个嵌入式.swf将尝试检索闪存 cookie 并调用 AJAX 函数(如果 cookie 存在(。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);
}
总而言之,我认为由于某种原因,Javascript函数没有被外部接口调用。我知道cookie已经设置好了,我知道AJAX可以工作,我知道PHP脚本可以工作(我没有包括PHP,似乎它超出了这个问题的范围(。调试了两个.swf脚本。我将FlashDevelopment与Flex 4一起使用。这些是非常简单的脚本,所以我想不出任何其他可能出错的地方。任何想法??
可能是脚本访问设置。 在嵌入中,尝试包含参数 allowscriptaccess:"always"。 如果没有它,外部接口调用将失败。
<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
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- Javascript(jQuery)给了我奇怪的结果
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Javascript/jQuery中的并行Ajax调用
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- Javascript/Jquery/PHP加载页面-如何
- Javascript/Jquery Blob not showing Chrome PDF
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- OnClick/Onhover Javascript/jquery
- 如何从javascript/jquery中的复选框中获取布尔值
- javascript/jquery将utc转换为短格式的本地时间
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 如何向这个javascript/jquery函数添加参数
- 用JavaScript/jQuery点击图片,选中多个方框
- 使用Javascript/JQuery获取JSON GET数据
- 从数组中删除元素的最佳方法是:javascript/jquery
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 用DRY方式Javascript/JQuery动态替换HTML
- 类似Javascript JQuery的库
- 如何在 Javascript/jQuery 中获取一些随机下拉列表的选定值