我正在使用SWFObject来播放Flash SWF文件。 SWF文件支持多个闪存变量。当我尝试为包含单引号和双引号混合的flash变量之一传递复数值时,当SWFObject将完全呈现的内容写入为flash对象设置的DIV时,会发生一些不好的事情。
下面是代码,显示了SWFObject将呈现内容写入的名为 flashcontent 的DIV,以及与SWFObject交互的Javascript代码:
<!-- Div that will receive the Flash object. This DIV is written to by SWFObject.js. Therfore It's name must match the name
in the so.write() statement below. -->
<div id="flashcontent">
</div>
<!-- Div that will receive the Flash object. This DIV is written to by SWFObject.js. Therfore It's name must match the name
in the so.write() statement below. -->
<div id="flashcontent">
</div>
<!-- Create the tag cloud -->
<script type="text/javascript">
var so = new SWFObject("/Content/flash/tagcloud.swf", "tagcloud", "600", "400", "7", "#336699");
so.addParam("wmode", "transparent");
so.addVariable("mode", "tags");
so.addVariable("distr", "true");
so.addVariable("tcolor", "0xff0000");
so.addVariable("hicolor", "0x000000");
so.addVariable("tagcloud", "<tags><a href='javascript:showMessage(\"tag1\");' style='9'>tag one</a><a href='javascript:showMessage(\"tag2\");' style='12'>Tag two</a></tags>");
so.write("flashcontent");
</script>
正如您所看到的,我尝试转义传递给我的Javascript showMessage()函数的字符串参数周围的双引号。但是,当呈现 flashcontent DIV内容时,它看起来像这样:
<div id="flashcontent"><embed type="application/x-shockwave-flash" src="/Content/flash/tagcloud.swf" width="600" height="400" id="tagcloud" name="tagcloud" bgcolor="#336699" quality="high" wmode="transparent" flashvars="mode=tags&distr=true&tcolor=0xff0000&hicolor=0x000000&tagcloud=<tags><a href='javascript:showMessage(" tag1");'="" style="9">tag one<a href='javascript:showMessage("tag2");' style="12">Tag two</a>"/></div>
第一个转义的双引号被解释为未转义的双引号,它会破坏格式,从而导致无效的超链接。如果我取出未转义的引号,这就是内容的样子:
<div id="flashcontent"><embed type="application/x-shockwave-flash" src="/Content/flash/tagcloud.swf" width="600" height="400" id="tagcloud" name="tagcloud" bgcolor="#336699" quality="high" wmode="transparent" flashvars="mode=tags&distr=true&tcolor=0xff0000&hicolor=0x000000&tagcloud=<tags><a href='javascript:showMessage(tag1);' style='9'>tag one</a><a href='javascript:showMessage(tag2);' style='12'>Tag two</a></tags>"></div>
现在格式正确,网页很健全。当然,当我的ShowMessage()函数显示消息时,我得到“未定义”,因为 tag1 和 tag2 不是有效的Javascript变量名。
SWFObject addvariable 方法是否做了非正统的转义双引号?如何创建一个 addvariable 接受的字符串,以便我可以在我的Javascript方法参数周围得到双引号?
答案 0 :(得分:1)
你正在使用一个非常过时的swfobject版本。尝试最新版本(2.2)或2.3测试版,他们每个人都在不同的方式下处理params。 2.3在你的情况下可能效果最好。