【问题标题】:How to pass PHP variable as FlashVars via SWFObject如何通过 SWFObject 将 PHP 变量作为 FlashVars 传递
【发布时间】:2011-02-23 09:26:49
【问题描述】:

我正在尝试获取一个 PHP 变量并通过 Flash vars 将其传递给 Flash。我的最终目标是将格式为 XML 的字符串传递给 Flash,但是因为我很努力,所以我将所有内容都剥离了基础。我只是想通过带有 SWFObject 的 FlashVars 将一个简单的 PHP 字符串变量传递给 Flash,但有些不对劲。当我尝试在 php 标签内传递变量时,页面不会加载,但如果我只传递一个硬编码的字符串,它将加载。我的页面的基本结构是我在顶部声明了一些 PHP,如下所示:

PHP

<?php
     $test = "WTF";
?>

一些 HTML(为简单起见,此处不包括在内),然后是嵌入到我的 HTML 中的 JavaScript SWFObject:

    <script type="text/javascript" src="js/swfobject2.js"></script>
    <script type="text/javascript">
        // <![CDATA[
        var swfURL = "swfs/Init-Flash-PHP.swf";

        var flashvars = {};
            flashvars.theXML = <?php print $test ?>;

        var params = {};
            //params.menu = "false";
            params.scale = "showAll";
            params.bgcolor = "#000000";
            params.salign = "TL";
            //params.wmode = "transparent";
            params.allowFullScreen = "true";
            params.allowScriptAccess = "always";

        var attributes = {};
            attributes.id = "container";
            attributes.name = "container";


        swfobject.embedSWF(swfURL, "container", '100%', '100%', "9.0.246", "elements/swfs/expressinstall.swf", flashvars, params, attributes);


        // ]]>
</script>

以及 ActionScript 3 代码的基本要素:

_paramObj = LoaderInfo(stage.loaderInfo).parameters;
theText_txt.text = _paramObj['theXML'];

如何使用 SWFObject 和 FlashVars 传递 PHP 变量?

谢谢。

【问题讨论】:

    标签: php flash swfobject actionscript-3


    【解决方案1】:

    呃,我需要转义 Flash 变量,但它起作用了。

    对于任何感兴趣的人,这是我需要更改的地方

    flashvars.theXML = <?php print $test ?>;
    

    到这里:

    flashvars.theXML = escape('<?php print $test ?>');
    

    【讨论】:

      【解决方案2】:

      escape() 不是一种万无一失的逃避方式(!)

      请改用 encodeURIComponent()。

      这来自常见问题解答中的第 9 点:http://code.google.com/p/swfobject/wiki/faq

      1. 如何使用 flashvars 将 URI 或 HTML 代码作为值传递?

      特殊字符和符号 = 和 & 不能直接在里面使用 flashvars 值(后者是因为 它们用于堆叠 flashvar 自己)。

      您可以通过以下方式解决此问题 之前转义这些字符 将它们作为 flashvar 值传递。一个 示例:

      encodeURIComponent("&trade") 将 成为 %26trade

      这些值将在您的 swf 已经未编码,所以没有 您的 swf 中需要取消转义。

      注意,encodeURIComponent 不是 可在所有浏览器中使用,但 可在所有常见的现代 版本。如果您需要完全向后 兼容性,你可以使用 escape() 相反,但请注意 escape() 确实 不适用于双字节 字符(如中文)。

      您也可以转义这些字符 手动使用:

      * %3D instead of =
      * %26 instead of &
      

      【讨论】:

        猜你喜欢
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 2018-08-05
        相关资源
        最近更新 更多