在IE和FireFox中播放Flash时出现XSLT问题

时间:2011-07-20 13:39:26

标签: javascript html xml flash xslt

好吧,我正在尝试在YUI面板中播放Flash视频。我无法让它在IE中工作。修正了它,但后来导致它无法在FireFox中工作。我花了HOURS调试,这就是我发现的:我的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中工作,唯一真正做到这一点的是从data="flash/playerVar1.2.swf"标记中删除<object>属性并将其更改为value="flash/playerVar1.2.swf"。这样做可以让我在IE中获得全部功能,但在FireFox中没有任何功能。我会给你一个链接,亲自看看,但它仍然在质量保证。有没有人有办法在所有平台上进行这项工作。有没有办法在我的XSLT中内联浏览器检测,然后给它条件?任何和所有的想法将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

我很确定<embed>内的<object>无效标记。即使是这样,您也应该真正关注Which browsers support the <embed> and <object> tags?,因为<embed> valid in HTML5

答案 1 :(得分:0)

我最后编写了浏览器检测并为IE运行了不同的代码,其中value =“flash / playerVar1.2.swf”而不是data =“flash / playerVar1.2.swf”。在我看来,最简单的方式来满足IE的野兽。哦,这在IE9的原始迭代中运行良好。