Как мне установить объект flash, чтобы открыть URL в новом окне? - PullRequest
2 голосов
/ 10 марта 2009

У меня есть этот код:

<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>

РЕДАКТИРОВАТЬ: код от Тома

<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>

Мне бы хотелось, чтобы, когда пользователь щелкает флэш-объект, он открывает URL-адрес в новом окне. Как мне это сделать?

Cheers, Keith

Ответы [ 3 ]

4 голосов
/ 10 марта 2009

Вы можете расположить DIV поверх вашего flash-объекта, чтобы захватить щелчок мышью. Для этого вам нужно установить непрозрачный wmode объекта flash и использовать некоторый 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. Позже, когда вызывается вручную, он возвращает правильное значение.

0 голосов
/ 10 марта 2009

Вы должны сделать это во флэш-памяти с помощью ActionScript

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

Создайте мувиклип, который заполняет всю сцену, и дайте ему имя btnMovieClip. Поместите приведенный выше код в рамку вашей временной шкалы.

0 голосов
/ 10 марта 2009

Это зависит (не всегда?).

Если вы хотите, чтобы флэш-объект всегда открывал один и тот же сайт, вы можете создать событие щелчка для тега объекта и запустить всплывающее окно JavaScript:

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

чтобы открыть другой сайт.

Если вы хотите, чтобы фильм FLASH открывал ссылку, в зависимости от того, на что вы нажали, вам нужно добавить действие GoToURL во флэш-память. Вам нужно будет указать это действие, чтобы открыть его в новом окне.

Что-то вроде GoToURL('www.yahoo.com', true), где true относится к открытию в новом окне.

Однако, поскольку у меня нет открытой флэш-памяти, мой синтаксис, вероятно, выключен.

Надеюсь, этого достаточно, чтобы вы начали.

...