【问题标题】:How do I set a flash object to open a url in a new window?如何设置 Flash 对象以在新窗口中打开 url?
【发布时间】:2009-03-10 15:09:30
【问题描述】:

我有这个代码:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="250">
  <param name="movie" value="Spotify_premium_300x250.swf" />
  <param name="quality" value="high" />
  <embed src="Spotify_premium_300x250.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="300" height="250"></embed>
</object>

编辑:Tom 的代码

<object onclick="javascript: window.open('http://www.stackoverflow.com', _blank, 'width=1024, height=600, menubar=no, resizable=yes');" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="300" height="250">
  <param name="movie" value="Spotify_premium_300x250.swf" />
  <param name="quality" value="high" />
  <embed src="Spotify_premium_300x250.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="300" height="250"></embed>
</object>

我希望当用户单击 Flash 对象时,它会在新窗口中打开一个 URL。我该怎么做呢?

干杯, 基思

【问题讨论】:

    标签: flash url object window new-operator


    【解决方案1】:

    您可以在 Flash 对象上放置一个 DIV 来捕捉鼠标点击。为此,您需要将 flash 对象的 wmode 设置为不透明,并使用一些 javascript 来定位 div。这是一个完整的例子:

    <html>
    <head>
    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    <script type="text/javascript">
        var flashvars = {};
        var params = {
            menu: "false",
            scale: "noScale",
            wMode: "opaque"
        };
        swfobject.embedSWF("MyFlashApp.swf", "swf", "300", "300", "9.0.0",
                           "expressInstall.swf", flashvars, params);
    
        $(function() {
            var swf = $("#swf");
            $("body").append(
                $("<div onclick=\"window.open('http://www.google.com');\"></div>").
                    css({
                        position: 'absolute',
                        top: swf.offset().top,
                        left: swf.offset().left,
                        width: swf.attr('width'),
                        height: swf.attr('height'),
                        zIndex: 1
                    })
            );
        });
    </script>
    </head>
    <body>
    <div id="swf"></div>
    </body>
    </html>
    

    注意使用swf.attr('width') 而不是swf.width(),后者返回0,可能是因为现在获取flash 对象的尺寸还为时过早。稍后,当手动调用时,它确实返回了正确的值。

    【讨论】:

    • 我尝试了这个解决方案,它在 Firefox 3.0.14 上运行良好,但在 IE7 上运行良好。在 IE 中单击 flash 对象不会执行任何操作。无赖!
    • 你检查过创建的 div 的位置是否正确吗?也许不是,因为 IE 如何处理“位置”CSS 样式。尝试将 body 元素的位置样式设置为 relative,看看是否有帮助。
    【解决方案2】:

    您需要使用 ActionScript 在 Flash 中执行此操作

    btnMovieClip.onRelease = function(){
        getURL("http://www.yoururl.com");
    };
    

    制作一个填充整个场景的影片剪辑,并将其命名为 btnMovieClip。将上面的代码放在时间轴的一个框架中。

    【讨论】:

    • 谢谢Eibx,可惜公司只给了我flash横幅,很奇怪好吗
    【解决方案3】:

    这取决于(不是总是这样吗?)。

    如果您希望 Flash 对象始终打开同一个站点,您可以为对象标签创建一个点击事件并让它运行 JavaScript 弹出窗口:

    javascript: window.open('http://www.stackoverflow.com', _blank, 'width=1024, 
                            height=600, menubar=no, resizable=yes');
    

    打开另一个网站。

    如果您希望 FLASH 电影打开一个链接,根据点击的内容,您需要在 flash 中添加一个GoToURL 动作。您需要告知该操作在新窗口中打开。

    GoToURL('www.yahoo.com', true) 之类的东西,其中 true 是指在新窗口中打开。

    但是,由于我没有打开 flash,我的语法可能已关闭。

    希望这足以让您入门。

    【讨论】:

    • 感谢您的帮助 Tom,我已将您的代码添加到如上所示的对象标记中,但仍然无法正常工作,也许我做错了?干杯,基思
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多