我正在使用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>).
谢谢!
我试图通过跨域的ExternalInterface启用Javascript和Flash之间的通信.当Javascript与SWF位于同一域时,它可以很好地工作.但在一种情况下,HTML驻留在域A上,javascript和flash都驻留在域B上.我已经完成了以下所有操作:
allowScriptAccess="always"(并且对象具有作为参数的对象)Security.allowDomain("*")Security.allowInsecureDomain("*")/crossdomain.xml文件allow-access-from domain="*"SWF能够在页面上调用javascript,但是当我使用Javascript来调用ExternalInterface公开的函数时,我得到了
在NPObject上调用方法时出错![插件异常:Actionscript中的错误.使用try/catch块查找错误.]
这是ActionScript 2所以ExternalInterface.marshallExceptions不可用.
我正在尝试使用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
我对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(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");
我正在开发一款Flash游戏,需要在页面上调用一些Javascript并从中获取数据.从Flash调用Javascript工作.从Javascript(通常)调用Flash函数不会.
我正在使用Gaia框架.
怎么了:
ExternalInterface.call()调用Javascript函数.这有效.ExternalInterface.addCallback().TypeError: myFlash.testCallback is not a function.addCallback().Gaia及其中包含的一些库使用addCallback(),从Javascript调用这些函数也会产生TypeError.addCallback()定期重试并不能解决错误ExternalInterface.available = true并ExternalInterface.objectID包含Flash嵌入对象的正确名称.document.getElementById('myflashcontent')正确返回Flash嵌入对象.编辑添加:
ExternalInterface.addCallback()被包裹在一个try...catch街区.发生JS错误时,不会触发该catch块.这是一场无声的失败.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) 有没有办法从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.
我开发了一个用于管理患者细节的软件,该软件将数据存储到MSsql数据库中....但是,我需要存储的数据必须从传输数据的外部设备读取...现在我的查询我是如何使用VB.NET 2010读取数据的.
我在网上搜索过,发现我可以使用My.Computer.Port从USB连接设备读取数据,但我无法得到它的逻辑和任何实例来实现这一点......
我也通过很多书来了解这样做的实用方法,但还没有解决任何问题.....
如果有人可以帮助我举个例子,那么我就能找到完成任务的方法......
这是我关于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编码.我现在正在寻找解决这个问题的方法.
是否可以使用ExternalInterface调用将数组从Flash(AS3)发送到JavaScript?
我目前正在从Flash中的'for each'循环中多次调用一个函数,但它的速度太快,以至于JavaScript无法跟上.
我的想法是创建一个属性数组,将其传递给JavaScript函数,然后在JavaScript中循环它.
谢谢,乔希
javascript ×9
flash ×6
actionscript ×1
angularjs ×1
cjk ×1
encoding ×1
swfobject ×1
usb ×1
vb.net ×1
webpack ×1