问题标签 [externalinterface]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在 ActionScript 中引发错误并使用 JavaScript 捕获它
我正在使用 ExternalInterface 使用回调和调用方法在 Flash 和 JavaScript 之间进行通信。我想在 ActionScript 3.0 中抛出一个异常并在 JavaScript 中捕获它,我想知道是否有办法做到这一点?
非常感谢你,鲁迪
javascript - 控制来自第三方的 document.write 调用的范围
我正在编写一个依赖于外部 javascript 文件(我无法控制)的网页,该文件通过使用 document.write 来返回数据。有没有办法在不覆盖整个文档的情况下动态调用函数?这是我能想到的最简洁的代码:
这个想法开始于不改变“horriblefunction()”(因为它是外部的)新文本可以放在 div 中而不是覆盖页面。这是可能的还是必须在创建页面时在 div 内调用该函数?
谢谢你的帮助
javascript - 在 UpdatePanel 中对 Flash 对象的 ExternalInterface 调用进行排队 - 需要改进吗?
Flash(实际上是 Flex)对象是使用 embedCallAC_FL_RunContent.js 脚本的修改版本在更新面板内的 ASP.Net 页面上创建的,因此可以动态写入。使用此脚本重新创建它,并将每个部分回发到该面板。页面上还有其他更新面板。
对于一些回发(部分和全部),外部接口调用,例如在$get('FlashObj').ExternalInterfaceFunc('arg1', 0, true);
服务器端准备并使用 ScriptManager.RegisterStartupScript 添加到页面。它们嵌入在函数中并填充到 Sys.Application 的加载事件中,例如Sys.Application.add_load(funcContainingExternalInterfaceCalls)
.
问题在于,因为 Flash 对象的状态状态可能会随着每次部分回发而改变,所以当 JavaScript -> Flash 外部接口调用被调用时,Flash (Flex) 对象和/或外部接口可能还没有准备好,甚至还存在于 DOM 中. 它会导致“对象不支持此属性或方法”异常。
如果 Flash 准备好,我有一个工作策略立即进行 ExternalInterface 调用,否则将它们排队,直到 Flash 宣布准备好。
每当我更新包含 Flash (Flex) 对象的更新面板时,我都会将 flashReady var 设置为脏。
我很高兴我让它工作,但感觉就像一个黑客。对于诸如闭包之类的概念,我仍在学习曲线上,为什么“eval()”显然是邪恶的,所以我想知道我是否违反了一些最佳实践,或者是否应该改进此代码,如果是的话如何?谢谢。
javascript - 使用 FireFox 加载时的 ExternalInterface 问题
我的 ExternalInterface 有问题。
当前设置的方式是,在页面加载时,在 JavaScript 中将布尔值设置为 true,然后由 ActionScript 构造函数(使用计时器)检查,直到它为 true。这标志着 JavaScript 已准备好接收来自 AS3 的调用。
此时,AS3 将添加回调并做一些内部工作,并在构造函数的末尾调用 JavaScript。到现在为止还挺好。JavaScript 将在此时调用 AS3 中的函数(在上述回调中定义),这就是一切都搞砸的地方。
在 IE 上,这工作得很好。但在 Firefox 上,它没有。当我调试它时,我看到调用了 javascript 函数,但是当它尝试调用 AS3 时,没有任何反应。我还尝试添加一个计时器,但由于某种原因,该函数仍会立即执行(在 IE 中)。
很奇怪的是,一两秒后,那个功能就起作用了,看来Flash没有完全加载到FireFox中?但它运行到我的构造函数的最后一行,所以我相信它已经加载了。
编辑:我实际上做了一个 try/catch,JavaScript 给了我一个“TypeError:this.version is not a function”。第二次调用“版本”实际上有效:
在从 AS3 中的构造函数调用的 init 期间,它会抛出错误,但稍后如果 JavaScript 从 addFiles 调用 getVersion() 则它可以工作(完全相同的函数)。
请有任何想法,我真的被困住了。
非常感谢,鲁迪
c# - Flash 和 C# 之间的通信使用没有 TLF 文本的 ExternalInterface
我正在使用如下命令从 Flash 应用程序进行通信: ExternalInterface.call("hello", "world")
这在 C# 端通过以下方式处理:
并且偶函数声明为
只要屏幕上有一个设置为使用 TLF 文本的文本框,axFlash_FlashCal 就可以正常调用。(任何文本框都可以,没有特定的 ID)。没有文本框,甚至不会触发。(即使 ExternalInterface.Avaliable 设置为 true)
我尝试使用 CS4 和 CS5 发布,同时使用 Flash 10 和 9 作为输出。这些事情都没有改变。
我正在使用 AS3 和 .NET 4.0。有没有人遇到过这个问题,或者知道为什么需要 TLF 文本才能工作?
jquery - 如何从 Flash 调用 jQuery 函数
我只有 IE 有一个问题:如果我尝试从 Flash 调用 JS 函数,ExternalInterface
如果 Flash 嵌入在 JQuery 对话框中,我将无法获得结果。当我从一个普通的 HTML 页面做同样的事情时,它会运行。
ExternalInterface.call
即使 flash 在对话框中,我如何调用以运行函数?
flash - Actionscript 3 Facebook API 限制
我正在使用 Actionscript 3 API 创建一个基于 Flash (AS3) 的 Facebook Connect 站点,虽然在允许用户正确登录方面我已经具备基本的 FB Connect 功能,但我在尝试询问时遇到了困难对于某些扩展权限。我并不肯定,但似乎 AS3 API 有两个相当大的限制:
您必须与初始登录调用分开提示扩展权限。换句话说,需要两个模态对话框,而不是一个。这似乎是因为连接是由 FacebookSessionUtil 的实例处理的,而扩展权限请求是由 FacebookSessionUtil.Facebook 的实例处理的。
似乎没有办法提示用户允许他们的电子邮件地址与您的应用程序共享。虽然我已经仔细阅读了http://facebook-actionscript-api.googlecode.com/svn/release/current/docs/index.html,但看起来那里的“EMAIL”权限只提示用户允许您的应用程序通过 facebook 向他们发送电子邮件,而不是直接分享他们的电子邮件地址。
我的假设在这里错了吗?使用 JS 和 ExternalInterface 来完成这类工作会更好吗?我宁愿不重建现有的东西,但如果这些限制是真实的,我似乎别无选择。
任何反馈或帮助将不胜感激。谢谢!
apache-flex - FlashVars 或 ExternalInterface
到目前为止,在我需要与 HTML 进行通信的极少数情况下,我一直在使用 ExternalInterface。
- FlashVars 被认为是更好/更差还是新/旧的做法?
- 或者你什么时候使用其中一个?我应该遵循什么逻辑来帮助我决定使用哪一个?
python - 如何与外部脚本(程序)交互
有一个需要键盘输入的脚本,我可以在 python 中使用 os.system('./script') 调用该脚本,
如何从另一个调用脚本将输入发送回脚本?
更新:
脚本是:
当我尝试不使用 for 循环时,它可以工作,但仅在脚本退出时才显示输出。
当我使用 foo 循环尝试它时,它会抛出错误,如何在使用新的打印语句更新标准输出时显示交互式语句
javascript - 在 Flash 中从 javascript 接收复杂对象
我正在尝试从 javascript 调用 Flash 函数,将复杂数据类型作为参数传递
,Flash 函数被正确调用但 args 没有值,
我的意思是它们都是具有属性的复杂数据类型,
但是当我尝试访问这些时在 Flash 中属性我得到“未定义”
,是的,我确定 javascript 代码是正确的,并且参数在 javascript 中具有正确的值