Flex应用程序在ie / chrome中加载但不在firefox中加载(在Azure上托管)

时间:2012-06-13 21:47:31

标签: flex azure flash loading

我看到的是浏览器加载html并显示空白页面。如果我将swfobject背景颜色更改为黑色,我会看到黑色正方形。对于较大的swf,我看到一个进度条,进入100%,然后停止。

我把它归结为一个简单的hello world应用程序,但它仍然无法使用。当Azure上的托管Web服务器实例提供SWF文件时,它似乎只会失败。奇怪的是,当从文件系统直接将html加载到浏览器中时,它可以工作 - 只是在Azure上托管时不行。运行模拟器时也会失败。我只是尝试将文件放入blob存储中,并且在所有浏览器中都能正常运行。我没有在另一台主机上试过这个文件。

这是html - 非常简单和通用。全部由Flash Builder生成。忽略它被称为ClientPreloader.swf的事实 - 我现在已经删除了所有功能,所以它只是舞台上的一个标签。

至于Azure,它托管在SP2上,我没有对正在运行的IE进行任何更改。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <!-- saved from url=(0014)about:internet -->
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
        <!-- 
        Smart developers always View Source. 

        This application was built using Adobe Flex, an open source framework
        for building rich Internet applications that get delivered via the
        Flash Player or to desktops via Adobe AIR. 

        Learn more about Flex at http://flex.org 
        // -->
        <head>
            <title></title>
            <meta name="google" value="notranslate" />         
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <!-- Include CSS to eliminate any default margins/padding and set the height of the html element and 
                 the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as 
                 the percentage of the height of its parent container, which has to be set explicitly.  Fix for
                 Firefox 3.6 focus border issues.  Initially, don't display flashContent div so it won't show 
                 if JavaScript disabled.
            -->
            <style type="text/css" media="screen"> 
                html, body  { height:100%; }
                body { margin:0; padding:0; overflow:auto; text-align:center; 
                       background-color: #ffffff; }   
                object:focus { outline:none; }
                #flashContent { display:none; }
            </style>

            <!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
            <!-- BEGIN Browser History required section -->
            <link rel="stylesheet" type="text/css" href="history/history.css" />
            <script type="text/javascript" src="history/history.js"></script>
            <!-- END Browser History required section -->  

            <script type="text/javascript" src="swfobject.js"></script>
            <script type="text/javascript">
                // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
                var swfVersionStr = "11.1.0";
                // To use express install, set to playerProductInstall.swf, otherwise the empty string. 
                var xiSwfUrlStr = "playerProductInstall.swf";
                var flashvars = {};
                var params = {};
                params.quality = "high";
                params.bgcolor = "#ffffff";
                params.allowscriptaccess = "sameDomain";
                params.allowfullscreen = "true";
                var attributes = {};
                attributes.id = "ClientPreloader";
                attributes.name = "ClientPreloader";
                attributes.align = "middle";
                swfobject.embedSWF(
                    "ClientPreloader.swf", "flashContent", 
                    "100%", "100%", 
                    swfVersionStr, xiSwfUrlStr, 
                    flashvars, params, attributes);
                // JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
                swfobject.createCSS("#flashContent", "display:block;text-align:left;");
            </script>
        </head>
        <body>
            <!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough 
                 JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
                 when JavaScript is disabled.
            -->
            <div id="flashContent">
                <p>
                    To view this page ensure that Adobe Flash Player version 
                    11.1.0 or greater is installed. 
                </p>
                <script type="text/javascript"> 
                    var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://"); 
                    document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='" 
                                    + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get 

Adobe Flash player' /></a>" ); 
                </script> 
            </div>

            <noscript>
                <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="ClientPreloader">
                    <param name="movie" value="ClientPreloader.swf" />
                    <param name="quality" value="high" />
                    <param name="bgcolor" value="#ffffff" />
                    <param name="allowScriptAccess" value="sameDomain" />
                    <param name="allowFullScreen" value="true" />
                    <!--[if !IE]>-->
                    <object type="application/x-shockwave-flash" data="ClientPreloader.swf" width="100%" height="100%">
                        <param name="quality" value="high" />
                        <param name="bgcolor" value="#ffffff" />
                        <param name="allowScriptAccess" value="sameDomain" />
                        <param name="allowFullScreen" value="true" />
                    <!--<![endif]-->
                    <!--[if gte IE 6]>-->
                        <p> 
                            Either scripts and active content are not permitted to run or Adobe Flash Player version
                            11.1.0 or greater is not installed.
                        </p>
                    <!--<![endif]-->
                        <a href="http://www.adobe.com/go/getflashplayer">
                            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe 

Flash Player" />
                        </a>
                    <!--[if !IE]>-->
                    </object>
                    <!--<![endif]-->
                </object>
            </noscript>     
       </body>
    </html>

1 个答案:

答案 0 :(得分:0)

这种任务的真正答案似乎是“不要那样做”。我很失望没有在这里看到任何回复。我对Azure的科学方法最终让我感到困惑。我试图一次采用一个功能(托管IE,然后存储等)。让它发挥作用的关键是做好一切。你需要拥抱所有的Azure。当然,与SWF文件相关的托管IIS存在明显的缺陷。但是如果你完全遵循建议 - 将大文件放在存储器中等等。这一切都能顺利进行(甚至更快)。