在IE和FireFox中播放Flash的XSLT问题

XSLT issues with playing Flash in IE and FireFox

本文关键字:Flash XSLT 问题 播放 IE FireFox      更新时间:2023-09-26

好了,我正在尝试在YUI面板中播放flash视频。我有麻烦让它在IE中工作。修复了它,但这导致它无法在FireFox中工作。我花了几个小时调试,结果发现:我的XSLT文档导致了这个问题!

<div id="mediaDisplay">
  <xsl:if test="//video/videoFile">
    <div class="flash" id="flashVid">
      <noscript>
        <object type="application/x-shockwave-flash" data="flash/playerVar1.2.swf" width="525" height="425" id="MediaEmbedObject" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
          <param name="movie" value="flash/playerVar1.2.swf"/>
          <param name="salign" value="lt"/>
          <param name="loop" value="false"/>
          <param name="menu" value="false"/>
          <param name="allowFullScreen" value="true"/>
          <param name="AutoPlay" value="true"/>
          <param name="FlashVars" value="movieSrc={$videouri}"/>
          <embed AutoPlay="true" src="flash/playerVar1.2.swf" quality="high" name="videogalleryObject" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="525" height="425" id="videogalleryObject" FlashVars="{$videouri}" allowFullScreen="true">
          </embed>
        </object>
      </noscript>
      <form action="" name="flashForm">
        <fieldset>
          <input type="hidden" name="flashDivId" value="flashVid"/>
          <input type="hidden" name="flashWidth" value="525"/>
          <input type="hidden" name="flashHeight" value="425"/>
          <input type="hidden" name="flashUrl" value="flash/playerVar1.2.swf"/>
          <input id="playingFlash" type="hidden" name="FlashVars" value="{$videouri}"/>
          <input type="hidden" name="flashName" value="Flash"/>
          <input type="hidden" name="flashAltText" value="{//video/altText}"/>
          <input type="hidden" name="allowScriptAccess" value="always"/>
          <input type="hidden" name="allowFullScreen" value="true"/>
        </fieldset>
      </form>
    </div>
  </xsl:if>
</div>

现在,这里写的方式可以在FireFox中工作。为了使它在IE中工作,实际上唯一做的事情是从<object>标签中删除data="flash/playerVar1.2.swf"属性并将其更改为value="flash/playerVar1.2.swf"。这样做可以让我在IE中获得完整的功能,但在FireFox中却没有。我想给你一个链接,但它还在QA阶段。有没有人有办法让它在所有平台上运行?是否有一种方法可以在XSLT中内联地运行浏览器检测,然后为其提供条件?任何和所有的想法都将受到赞赏。谢谢!

我很确定<object>中的<embed>不是有效的标记。即使是这样,你也应该看看哪些浏览器支持嵌入。和& lt; object>标签?由于<embed>只有在HTML5中有效

我最终在浏览器检测中编写,并在IE中运行不同的代码,其中value="flash/playerVar1.2.swf"而不是data="flash/playerVar1.2.swf"。在我看来,最简单的方式来满足IE的野兽。哦,这在IE9的原始版本中工作得很好。