【问题标题】:Trouble with mixing quotes in SWFObject addvariable call在 SWFObject addvariable 调用中混合引号的问题
【发布时间】:2013-08-19 03:33:25
【问题描述】:

我正在使用 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&amp;distr=true&amp;tcolor=0xff0000&amp;hicolor=0x000000&amp;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&amp;distr=true&amp;tcolor=0xff0000&amp;hicolor=0x000000&amp;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 方法参数周围获得双引号?

【问题讨论】:

    标签: flash video swfobject


    【解决方案1】:

    您使用的是非常过时的 swfobject 版本。尝试最新版本 (2.2) 或 2.3 beta,它们在后台处理参数的方式各不相同。 2.3 可能最适合您的情况。

    【讨论】:

    • 谢谢。我似乎找不到 SWFObject 2.3,只有 2.2。有链接吗?
    • 2.2 完成了这项工作。关于 SWFObject 的旧副本存在问题,您是对的。如果您找到 2.3 的链接,请发布。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2011-06-10
    相关资源
    最近更新 更多