如何在param元素的值属性中转义等号?

时间:2015-05-27 18:22:40

标签: javascript actionscript-3 escaping flash

我有一个用于存储SWF对象的embed标记。我一直在这里关注此文档

https://helpx.adobe.com/flash/kb/pass-variables-swfs-flashvars.html

我需要创建一个名称等于FlashVars的参数。

我需要在value属性中存储API令牌。问题是令牌本身有一个等号。

我的令牌是

var token = "GABVZgTs_____2R2cHlzNHd5ZXg3Z2M0OXdoaDY3aHdrbo80onzX6aHp2ytZg17l7bE="

<object data="http://www.rdio.com/api/swf/">
  <param name=FlashVars
         value="token=GABVZgTs_____2R2cHlzNHd5ZXg3Z2M0OXdoaDY3aHdrbo80onzX6aHp2ytZg17l7bE="></param>
</object>

value属性的结果将嵌入到引号内。然后在引号内你有语法

key=value

但值本身有一个等号。我应该将值嵌入引号内的值吗?

以下是API说明

  

必须从http://www.rdio.com/api/swf/嵌入API SWF   以下flashvars参数:

     

playbackToken:从中检索的有效回放标记   getPlaybackToken Web服务API方法

     

domain:SWF的域名   将嵌入

     

listener&#34;要接收的JS对象的名称   回调

     

enableLogging:可选,在设置为1时提供调试日志记录   嵌入SWF的最简单方法是使用SWFObject库。

     

状态回调将在传入的任何对象上调用   回调参数。例如,如果提供了foo,则准备就绪   回调将被称为window.foo.ready()。

     

可以直接在嵌入对象上调用方法 - 或    tag的DOM节点。由于Flash本身定义了一些方法   方法以rdio _。为前缀。

     

要在带有ID栏的API SWF上调用play方法,您可以调用:

我也一直在使用这个来源

http://www.w3schools.com/tags/tag_param.asp

2 个答案:

答案 0 :(得分:1)

虽然对参数进行URL编码也很好,但在这种情况下,它可以正常工作。

网址变量在&(&符号)上拆分。然后找到的第一个=用于区分名称/键和值。因此,只要你的两个等号之间没有符号,就可以了。

确实,我测试了你的确切令牌值,它没有问题。

最佳做法是使用javascript或您的服务器脚本对进行网址编码,然后再将它们放入FlashVars中。

例如:JS:

var token = "GABVZgTs_____2R2cHlzNHd5ZXg3Z2M0OXdoaDY3aHdrbo80onzX6aHp2ytZg17l7bE=";
var flashVarToken = encodeURIComponent(token);
var paramNode = "<param name=\"FlashVars\" value=\"token=" + flashVarToken + "\"></param>";

然后在AS3中解码值。

var token:String = unescape(this.loaderInfo.parameters.token);

使用这种方法,您可以在值中包含所需数量的&符号,等号和空格等,而不会弄乱它。

答案 1 :(得分:0)

  • 将值保存在变量中。
  • 执行replace("=", "\\=").
  • 然后您的值将包含转义字符&#39; \&#39;。

希望我回答你的问题。