标签: externalinterface

从遗留代码中调用AngularJS

我正在使用AngularJS来构建与传统Flex应用程序交互的HTML控件.Flex应用程序中的所有回调都必须附加到DOM窗口.

例如(在AS3中)

ExternalInterface.call("save", data);
Run Code Online (Sandbox Code Playgroud)

将会通知

window.save = function(data){
    // want to update a service 
    // or dispatch an event here...
}
Run Code Online (Sandbox Code Playgroud)

在JS resize函数中,我想发送一个控制器可以听到的事件.似乎创建服务是最佳选择.你能从AngularJS外部更新服务吗?控制器可以监听服务中的事件吗?在一个实验(点击小提琴)我做了似乎我可以访问服务,但更新服务的数据不会反映在视图中(在示例中<option>应该添加到<select>).

谢谢!

javascript actionscript-3 externalinterface angularjs

180
推荐指数
6
解决办法
9万
查看次数

跨域ExternalInterface"NPObject上的错误调用方法"

我试图通过跨域的ExternalInterface启​​用Javascript和Flash之间的通信.当Javascript与SWF位于同一域时,它可以很好地工作.但在一种情况下,HTML驻留在域A上,javascript和flash都驻留在域B上.我已经完成了以下所有操作:

  • embed标签有allowScriptAccess="always"(并且对象具有作为参数的对象)
  • 我的SWF文件的actionscipt有 Security.allowDomain("*")
  • 我的SWF也打来电话 Security.allowInsecureDomain("*")
  • 域A和域B都有一个/crossdomain.xml文件allow-access-from domain="*"

SWF能够在页面上调用javascript,但是当我使用Javascript来调用ExternalInterface公开的函数时,我得到了

在NPObject上调用方法时出错![插件异常:Actionscript中的错误.使用try/catch块查找错误.]

这是ActionScript 2所以ExternalInterface.marshallExceptions不可用.

javascript flash actionscript-2 externalinterface

19
推荐指数
1
解决办法
5万
查看次数

如何使用webpack访问全局对象(窗口)?

我正在尝试使用JavaScript ExternalInterface和webpack 将ActionScript与JavaScript连接起来.

ExternalInterface只能call在全局对象(window)上找到provoked()函数.如何在window(全局对象)上获取webpack模块参考?

请允许我详细说明一下,我想为company(window.companyName)创建一个名称空间,其接口为ExternalInterface:

window.companyName = { isReady: function() { ... },
                       driver1: function() { ... }, 
                       driver2: function() { ... } }
Run Code Online (Sandbox Code Playgroud)

ActionScript将驱动我的JavaScript.更基本的问题是,如何使用webpack设置全局变量以便ExternalInterface可以看到它们(最好是作为模块的导出)?

我试过用expose-loader,exports-loader imports-loader没有运气.expose-loader理想情况下,我需要什么,但似乎不起作用.当我在我的模块中设置window.companyName并尝试在我的chrome控制台中验证它时,它会导致undefined.

javascript global-variables actionscript-3 externalinterface webpack

18
推荐指数
2
解决办法
2万
查看次数

当我使用类似字符串的JSON传递参数时,为什么ExternalInterface会中断?

我对Flash 10和ExternalInterface有一个非常奇怪的问题.我目前正在使用自制网桥使用带有Javascript的RTMFP,每当我尝试传递包含JSON的数据时,我都会收到来自Flash的奇怪的Javascript错误:

missing ) after argument list
try { __flash__toXML(Flash.Utilities.A..."")) ; } catch (e) { "<undefined/>"; }
Run Code Online (Sandbox Code Playgroud)

由于这来自Flash并且它不受任何Javascript文件的约束,因此无法获得更多信息.

要重现此问题,您可以使用此脚本:

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.external.ExternalInterface;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            var test:String;

            test = "\"\\\"\"";

            ExternalInterface.call("console.log", test);
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能避免这个问题,这是一个众所周知的问题吗?

javascript flash actionscript-3 externalinterface

14
推荐指数
2
解决办法
8179
查看次数

Javascript - > Flash throw"NPObject上的错误调用方法"

我正在尝试从Javascript调用Flash(AS3)函数.当代码运行时,我收到错误"错误:未捕获异常:错误调用NPObject上的方法!" 从我今天的谷歌搜索,这似乎是一个安全问题,我已经做了我能找到的一切,但错误仍然出现.

一些细节:
*这适用于Flash 9和Flash 10播放器.
*swf与加载它的php文件位于同一个域中,并且包含试图调用Flash函数的javascript.
*我正在使用sfwobject2.2来加载swf文件,如下所示: 我的Flash电影正在执行allowDomain事情,正如我所知道的那样: *我知道ExternalInterface.addCallback设置正确 - 当我禁用它,我得到一个"没有这样的功能"错误而不是NPObject投诉. 这让我完全疯了,我无法弄清楚如何纠正它.有什么建议吗?

var flashvars = {};
var params = {};
var params = {menu: false, bgcolor: "#ffffff", allowScriptAccess: "always"};
swfobject.embedSWF("/path/to/swf", "id", "480", "310", "9.0.0", null, flashvars, params, attributes);




Security.allowDomain("www.mydomain.com");



javascript flash externalinterface

11
推荐指数
1
解决办法
2万
查看次数

在ExternalInterface.addCallback中注册的函数在Javascript中不可用

我正在开发一款Flash游戏,需要在页面上调用一些Javascript并从中获取数据.从Flash调用Javascript工作.从Javascript(通常)调用Flash函数不会.

我正在使用Gaia框架.

怎么了:

  1. swf与SWFObject一起加载
  2. Flash文件中有一个按钮.单击时,它用于ExternalInterface.call()调用Javascript函数.这有效.
  3. Javascript函数调用公开的Flash函数ExternalInterface.addCallback().
  4. 有时,Javascript会产生以下错误:TypeError: myFlash.testCallback is not a function.
  5. 发生错误时,它会影响注册的所有功能addCallback().Gaia及其中包含的一些库使用addCallback(),从Javascript调用这些函数也会产生TypeError.
  6. 在Flash中按下按钮之前等待很长时间并不能解决错误.
  7. 让Flash addCallback()定期重试并不能解决错误
  8. 发生错误时,ExternalInterface.available = trueExternalInterface.objectID包含Flash嵌入对象的正确名称.
  9. 发生错误时,document.getElementById('myflashcontent')正确返回Flash嵌入对象.

编辑添加:

  • 此问题出现在Firefox 3.6中,但不出现在Chrome或IE8中.我没有尝试旧版浏览器.
  • 我正在运行Flash播放器的Debug版本.
  • 我的电话ExternalInterface.addCallback()被包裹在一个try...catch街区.发生JS错误时,不会触发该catch块.这是一场无声的失败.
  • 在webhost上进行测试时发生错误,swf从与其所在页面相同的服务器加载.
  • 我设置allowScriptAccess = always.
  • 设置flash.system.Security.allowDomain("mydomain")不能解决错误.

从我的Page类:

public class MyPage extends AbstractPage
{
    // declarations of stage instances and class variables …
Run Code Online (Sandbox Code Playgroud)

javascript flash swfobject actionscript-3 externalinterface

10
推荐指数
1
解决办法
1万
查看次数

在Javascript中获取ExternalInterface定义

有没有办法从Flash对象中获取公开函数的列表?例如,您可以通过执行以下命令获取对象中所有方法的列表:

for (var i in object) {
  if (typeof object[i] == "function") {
    console.log(i);
  }
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,这不会暴露通过ExternalInterfaces API注册的任何方法.我可以尝试看看函数是否存在(object['method'])它告诉我它是一个函数,但我必须以这种方式猜测每个现有的方法.

注意:显然,我无法访问actionscript.

javascript flash actionscript externalinterface

9
推荐指数
1
解决办法
2238
查看次数

如何从VB.NET中的USB端口获取数据

我开发了一个用于管理患者细节的软件,该软件将数据存储到MSsql数据库中....但是,我需要存储的数据必须从传输数据的外部设备读取...现在我的查询我是如何使用VB.NET 2010读取数据的.

我在网上搜索过,发现我可以使用My.Computer.Port从USB连接设备读取数据,但我无法得到它的逻辑和任何实例来实现这一点......

我也通过很多书来了解这样做的实用方法,但还没有解决任何问题.....

如果有人可以帮助我举个例子,那么我就能找到完成任务的方法......

vb.net usb visual-studio-2010 externalinterface

9
推荐指数
1
解决办法
5万
查看次数

AS3 Flash - 通过ExternalInterface渲染html

这是我关于Stack Overflow的第一个问题.这不是我第一次写一个,但通常我会找到一个使用搜索栏的解决方案,这次我没有.我正在解决的问题有点复杂,所以我会尝试尽可能彻底地解决问题.

基本上我们将中文付款添加到Flash中已有的电子商务中.整个网站都在AS3中,使用SWFObject嵌入,已经使用ExternalInterface进行其他操作.

这种新的中国支付方式有点过时,所以他们有一种奇怪的处理方式.一旦我们向他们的服务器发送了包含所有订单详细信息的POST,他们就会回复一个HTML页面.我的问题是渲染这个页面,考虑到我在Flash中收到它.

我正在尝试的解决方案部分工作,这意味着我能够看到页面,但应该在页面中的中文字符渲染得很糟糕.而不是中文字符我看到奇怪的字符,所以我猜测当我将HTML从Flash传递给Javascript时必定存在编码问题.这就是我这样做的方式:

AS3:

//extract html page from response
var newHTML:String = e.currentTarget.data;
//trim whitespace to avoid javascript error
newHTML = newHTML.replace(/\n/g, '');
newHTML = newHTML.split("\r").join("");

if(ExternalInterface.available)
  ExternalInterface.call("chinesePayment('"+newHTML+"')");
else
  trace("External interface error");
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

function chinesePayment(param) {
  var newWindow = window.open();
  //var unescaped = unescape(param);
  newWindow.document.write(param);
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用unescape,escape,URIencoding,但没有任何成功,所以我真的希望你能帮助我在这里!

谢谢,多梅尼科

编辑:

我只想提一下,我从他们的服务器上收到了正确的HTML页面.我尝试在本地保存页面,直接从服务器响应中复制HTML代码,并正确地查看页面.这意味着在将页面从AS3传递到Javascript的过程中必定存在问题.

EDIT2!重要:

我意识到问题在于弹出编码.当我从弹出窗口复制HTML时,将其粘贴到编辑器中并保存,我可以正确查看HTML.好像弹出窗口不考虑gbk编码.我现在正在寻找解决这个问题的方法.

javascript encoding actionscript-3 cjk externalinterface

9
推荐指数
1
解决办法
528
查看次数

将数组从Flash(AS3)发送到JavaScript

是否可以使用ExternalInterface调用将数组从Flash(AS3)发送到JavaScript?

我目前正在从Flash中的'for each'循环中多次调用一个函数,但它的速度太快,以至于JavaScript无法跟上.

我的想法是创建一个属性数组,将其传递给JavaScript函数,然后在JavaScript中循环它.

谢谢,乔希

javascript flash actionscript-3 externalinterface

8
推荐指数
3
解决办法
8614
查看次数