[Flash] 解决在 IE 中 Flash 影片会被要求按一下按钮的问题

时间:2019-09-05
本文章向大家介绍[Flash] 解决在 IE 中 Flash 影片会被要求按一下按钮的问题,主要包括[Flash] 解决在 IE 中 Flash 影片会被要求按一下按钮的问题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

或许你也曾发现嵌在网页中的 Flash 影片(如果你不清楚如何在网页中嵌入 Flash 影片的话,可以参考“在网页中插入影片 ”一文),当呈现在 IE 浏览器里时,会出现要求你按一下让影片才能启动的问题。这篇文章就是解决该问题的方法...


这是微软的 Knowledge Base 中所发表的文章: http://support.microsoft.com/default.aspx?scid=kb;zh-tw;555662&sd=rss&spid=6351

在这个文章中解释了如何解决我在标题中所说明的问题。也就是说,或许你也曾发现嵌在网页中的 Flash 影片(如果你不清楚如何在网页中嵌入 Flash 影片的话,可以参考“在网页中插入影片 ”一文),当呈现在 IE 浏览器里时,会出现要求你按一下让影片才能启动的问题。这篇文章就是解决该问题的方法。

做法很简单,就是套用一道 JavaScript 命令来输出 这道 HTML 命令,而且不能直接输出,而是要写在外部 .js 程序中。

以下是详细的步骤:

  1. 从 VS2005 中加入一个 Jscript 程序,例如名为 Mainshow.js
  2. 把原来的 命令包在 document.writeln 命令中
  3. 从 .aspx 程序中,将原来的 命令改掉,让它变成

    而 Mainshow.js 的内容则是:

    document.writeln('');
    document.writeln('');
    document.writeln('');
    document.writeln('');
    document.writeln('');
    document.writeln('');
    document.writeln('');
    document.writeln('');
    document.writeln('
    ');

    请注意,我试过将 document.writeln... 写在 里面,结果无效。我也试过将 JavaScript 命令写成 才会生效。当然,我并不知道原因出在哪里。

    我所使用的测试环境是 .NET Framework 2.0。

    Re: [Flash] 解决在 IE 中 Flash 影片会被要求按一下按钮的问题

    在上面所采用的解决方案中,我们虽然解决了主要的问题,但实际上还有另一个恼人的问题存在,那就是当开发端和服务器端网站根目录不一致的时候,所产生位址差异的现象。譬如说,我们在开发端使用的网站根目录是 "/Solution" 而服务器端为 "/"。对于普通的网页控件,我们可以使用 ResolveUrl 来取得网页的实际位址,例如:

    但是对于已经放置于 .js 中的 .swf 文件,我们就没办法从服务器端克服这个问题。因为 .js 并非 ASP.NET 支持的文件类型,我们无法对它撰写服务器端程序。但是有一个非常简单的解决方案,那就是将 .js 以 HttpHandler 程序来产生。

    HttpHandler 称为“泛型处理常式”,您可以在网站中加入这个项目,其副文件是 .ashx。一般而言,.ashx 通常被用来输出 XML 或图片(像是计数器)。不过它也可以输出各种 MIME 类型的文档(请参考“条列各种 MIME 文件类型”一文),当然包括文档格式的文件。

    以下我们先来看看范例程序:

    <%@ WebHandler Language="VB" %>

    Imports System
    Imports System.Web

    Public Class ShowFlash : Implements IHttpHandler
      
       Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
           Dim requestedSource As String = HttpContext.Current.Request("source")
           Dim requestedHeight As Integer = HttpContext.Current.Request("height")
           Dim requestedWidth As Integer = HttpContext.Current.Request("width")
           Dim source As String = HttpContext.Current.Request.ApplicationPath & requestedSource
          
           Dim script As String = _
           "        "codebase=""http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"" height=""" & requestedHeight & """ width=""" & requestedWidth & """>" & _
           "" & _
           "" & _
           "" & _
           "" & _
           "
    "
          
           Dim sReturn As String = "document.write('" & script & "');"
           context.Response.ContentType = "text/plain"
           context.Response.Write(sReturn)
          
       End Sub
      
       Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
           Get
               Return True
           End Get
       End Property

    End Class

    如果您去调用这个程序,它会直接输出文字,就像你去读取文字档一样。所以你可以将

    请注意, 我让 ShowFlash.ashx 接收三个参数,其中一个是 .swf 的实际位置,其它两个则是这段影片的宽度与深度。使用这种方法,你以后就不需要为每个 Flash 影片撰写 .js 程序了。

    此外,如果你留意的话,我把

    后记: 这篇文章是在 2006 年发表的, 距今已有一段时间, 各个浏览器也都已经有更新的版本, 或许以上所提供的解法已经不一定适用了。


    Dev 2Share @ 点部落

    原文:大专栏  [Flash] 解决在 IE 中 Flash 影片会被要求按一下按钮的问题


    原文地址:https://www.cnblogs.com/petewell/p/11465813.html