1

我正在开发一个应该在其上嵌入 Flex swf 对象的 JSF 应用程序,但是我无法成功地做到这一点。我现在正在做的是使用 Primefaces commandButton,它在 click 事件上执行 javascript 函数:

我使用的代码如下:

<ui:define name="contentPreview">
    <div style="width: 100%;height: 400px;border: 1px solid;">

    <p:commandButton value="Vista Previa Tour" 
                     process="@this"
                     onclick="loadFlexVirtualTour();"
                      style="float:left;"/>


    <h:panelGroup layout="block" id="flashContent" rendered="true">
               <p>
            To view this page ensure that Adobe Flash Player version 
            11.1.0 or greater is installed. 
        </p>

    </h:panelGroup>

    </div>
</ui:define>

以及用于加载 swf 对象的脚本:

<script type="text/javascript">

        function loadFlexVirtualTour(){
        alert(UrlExists("virtualTour.swf"))
        // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. 
        var swfVersionStr = "10.0.0";
        // To use express install, set to playerProductInstall.swf, otherwise the empty string. 
        swfobject.embedSWF("virtualTour.swf", "flashContent", "400", "400", swfVersionStr);

        // 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;");
        }

        function UrlExists(url)
        {
            var http = new XMLHttpRequest();
            http.open('HEAD', url, false);
            http.send();
            return http.status!=404;
        }
    </script>

UrlExists 是一个检查给定 URL 上是否存在资源的函数,在这种情况下,我正在检查 virtualTour.swf 是否与 jsf 页面位于同一目录中。

该函数执行正确,因为我可以在屏幕上看到警报,甚至 URLExists 函数也返回 true。但是,应用程序未加载。我做错了什么...

PD:标签只生成一个 html 元素,特别是在这种情况下,渲染 html 将是

 <button id="j_idt43" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="submit" style="float:left;" onclick="loadFlexVirtualTour();;PrimeFaces.ab({formId:'j_idt8',source:'j_idt43',process:'j_idt43'});return false;" name="j_idt43" role="button" aria-disabled="false">
4

0 回答 0