首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExternalInterface

ExternalInterface
EN

Stack Overflow用户
提问于 2010-04-29 17:41:07
回答 5查看 2.1K关注 0票数 0

嘿,我在运行ExternalInterface时遇到了一堆问题,这很奇怪,因为我经常使用它。

我希望这是我刚刚错过的东西,因为我已经看了太久了。

flash_ready函数正确地返回了objectID,据我所知,其他一切都是正常的。

不幸的是,当我运行它时,我得到一个错误(根据浏览器的不同),告诉我基本上document.getElementById(<movename>).test()不是一个有效的方法。

代码如下:

javascript:

代码语言:javascript
复制
function flash_ready(i){
    document.getElementById(i).test('success!'); 
}

嵌入Html (生成):

代码语言:javascript
复制
<script type="text/javascript">
    swfobject.embedSWF("/chainmaille/includes/media/flash/upload_image.swf", "/chainmaille/includes/media/flash/upload_image", "500", "50", "9.0.0","expressInstall.swf", {}, {allowScriptAccess:'always', wmode:'transparent'},{id:'uploader_flash',name:'uploader_flash'});
</script>
<object type="application/x-shockwave-flash" id="uploader_flash" name="uploader_flash" data="/chainmaille/includes/media/flash/upload_image.swf" width="500" height="50"><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>

AS3:

代码语言:javascript
复制
package com.jesseditson.uploader {

  import flash.display.MovieClip;
  import flash.external.ExternalInterface;
  import flash.system.Security;

    public class UI extends MovieClip {

     // Initialization:
     public function UI() {
        Security.allowDomain('*');
        ExternalInterface.addCallback("test", test);

        var jscommand:String = "flash_ready('"+ExternalInterface.objectID+"');";
        var url:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);");
        navigateToURL(url, "_self");
    }

    public function test(t){
      trace(t);
    }
  }
}

Swfobject是通过google代码包含的,flash嵌入得很好,所以这不是问题所在。

我在另一台服务器上有一个非常相似的设置,但在这台服务器上似乎无法正常工作。这是一个Hostgator共享服务器。会不会是服务器的问题?有没有人看到明显的语法问题?

提前感谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-06-16 08:22:31

好的,经过进一步的调查,似乎flash对象的多个实例出现了问题,因为我正在将其克隆到lightbox。我现在已经让它工作了。

票数 1
EN

Stack Overflow用户

发布于 2010-04-30 05:58:05

Flash实际上还没有完成构建。您正在从构造函数调用flash_ready回调函数,因此JS试图在对象出现之前调用它。比方说,将您的flash_ready调用移动到Event.ADDED_TO_STAGE侦听器,它就应该开始工作了。

票数 1
EN

Stack Overflow用户

发布于 2011-10-27 13:29:38

我花了5个小时来解决这个问题。这一切真的很令人沮丧。在我的例子中,解决方案非常非常简单,我永远也不会猜到。因此,首先,对于所有从未见过flash player调试器在浏览器内部的文件上运行的人来说,发现this link that walks you through the setup带来了某种神奇的体验:)现在到我的ExternalInterface发现:在同一个域中存在沙箱冲突。这意味着闪存无法从yourdomain.com访问www.yourdomain.com。当然,奇怪的是您没有显式地使用ExternalInterface调用域。无论如何,解决方案非常简单:将此代码添加到我的.htaccess文件中,就是这样!

代码语言:javascript
复制
# Redirect non-www to www 
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.youtdomain.com/$1 [R=301,L] 

希望这能帮助到某人

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2736212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档