【发布时间】:2011-03-31 22:50:59
【问题描述】:
我有一个 SWF,用于收集网站用户的反馈。使用通过嵌入在页面中的 flashvars 提供的 URL 以 XML 形式提取所提出的问题。不幸的是,这似乎在我的最新版本的 SWF 中被破坏了。
这是我嵌入对象的方式:
<script src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("http://localhost/mysite/q.swf", "flashcontent", "900", "360", "9.0.0", "http://localhost/mysite/expressInstall.swf", { loadurl: escape("http://localhost/mysite/q.php?q=13") }, {}, {});
</script>
</head>
<body>
<div id="flashcontent">
</div>
</body>
我正在尝试像这样提取 loadurl flashvar:
this.loaderInfo.addEventListener(Event.COMPLETE, function(e:Event) {
init();
});
function init()
{
*snip*
loadurl = unescape((loaderInfo.parameters.loadurl));
}
在浏览器中使用ExternalInterface.call() 调用console.log 会输出null,但在以前的版本中(此代码保持不变)它可以正常工作并按我的预期输出URL。我可以在它们之间切换,看到它在早期工作,然后更新到较新的,它再次输出 null。
该资产的新版本中唯一的变化是我添加了一个符号和一些代码,以便在加载 XML 后将其添加到阶段 - 但这并没有以任何方式更改获取 URL 的代码来自页面的 HTML。
我使用的是 Flash CS5,它是一个 ActionScript 3.0 项目。
谁能建议我哪里出错了?我花了很长时间把头发拉出来,所以任何帮助都将不胜感激。我确实在某处读到这可以通过 ExternalInterface 来完成 - 它是否更适合这样的场景?如果由于某种原因我无法使其正常工作,这是一个可行的替代方案吗?
谢谢!
【问题讨论】:
-
有一个 swfobject 版本破坏了某些浏览器中的 flashvars,因此请务必更新到最新版本...除此之外,我没有看到任何奇怪的东西。
-
@Cay - 我做了仔细检查,今晚升级到最新版本,感谢您的意见。为了让它为我的客户工作,我刚刚使用 ExternalInterface 来调用一个返回 URL 的 JS 函数。有点小技巧,但它会做。
-
可能是范围问题?您是否尝试过使用“this” loadurl = unescape((this.loaderInfo.parameters.loadurl));
-
我没有,但它出现在自动完成中,所以我认为它在范围内 - 我没有收到任何关于
loaderinfo或loaderinfo.parameters为空或未定义或任何错误的错误。稍后我会检查一下!
标签: flash actionscript-3 flash-cs5