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

How to escape an equals sign in param element's value attribute?

我有一个嵌入标签,将用于存储 SWF 对象。我一直在关注此文档

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

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

我需要在值属性中存储一个 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说明

The API SWF must be embedded from http://www.rdio.com/api/swf/ with the following flashvars arguments:

playbackToken: a valid playback token, retrieved from the getPlaybackToken Web Service API method

domain: the domain that the SWF will be embedded in

listener" the name of a JS object to receive callbacks

enableLogging: Optional, provides debug logging when set to 1 The easiest way to embed the SWF is to use the SWFObject library.

Status callbacks will be called on whatever object was passed in as the callback parameter. For example if foo was supplied then the ready callback will be called as window.foo.ready().

Methods can be called directly on the embed object — the or tag’s DOM node. Since Flash itself defines some methods all methods are prefixed with rdio_.

To call the play method on an API SWF with ID bar you could call:

我也一直在用这个来源

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

  • 将值保存在变量中。
  • 做一个replace("=", "\=").
  • 那么您的值将包含转义字符“\”。

希望我回答了你的问题。

虽然 URL 对您的参数进行编码也很好,但在这种情况下,它将按原样正常工作。

URL 变量在 &(&符号)上拆分。然后找到的第一个 = 用于区分 name/key 和值。所以只要你的两个相等之间没有符号,就可以了。

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

不过,最佳做法是使用 javascript 或您的服务器脚本对 进行 URL 编码,然后再将它们放入 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);

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