2009-03-10 10 views
2

Ich habe diesen Code:Wie setze ich ein Flash-Objekt, um eine URL in einem neuen Fenster zu öffnen?

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

EDIT: Code von 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> 

ich es als möchte, wenn ein Benutzer klickt auf das Flash-Objekt, es wird eine URL in einem neuen Fenster geöffnet. Wie würde ich das machen?

Cheers, Keith

Antwort

4

Sie können ein DIV über Ihr Flash-Objekt positionieren, um den Mausklick zu erfassen. Um dies zu tun, müssen Sie den wmode des Flash-Objekts auf undurchsichtig setzen, und verwenden Sie Javascript, um das div zu positionieren. Hier ist ein vollständiges Beispiel:

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

Beachten Sie die Verwendung von swf.attr('width') statt swf.width(), wobei die letzteren den Wert 0 zurück, wahrscheinlich, weil es zu früh ist, die Flash-Objekt Dimensionen zu erhalten. Später, wenn es von Hand aufgerufen wird, gibt es den richtigen Wert zurück.

+0

Ich habe versucht, die Lösung und es funktionierte gut mit Firefox 3.0.14, aber nicht mit IE7. Ein Klick auf das Flash-Objekt in IE tut nichts. Schade! – tzup

+0

Haben Sie überprüft, ob das erstellte div richtig positioniert ist? Vielleicht ist es nicht, weil IE den CSS-Stil "Position" behandelt. Versuchen Sie, den Positionsstil Ihres Körperelements relativ zu setzen, und sehen Sie, ob das hilft. –

0

Es hängt (nicht immer?).

Wenn Sie das Flash-Objekt wollen immer die gleiche Seite öffnen können Sie eine On-Click-Ereignis für das Objekt-Tag erstellen und es einen JavaScript-Pop-up laufen:

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

eine andere Website zu öffnen.

Wenn Sie möchten, dass der FLASH-Film einen Link öffnet, müssen Sie je nach dem, was angeklickt wurde, eine Aktion GoToURL im Flash hinzufügen. Sie müssen diese Aktion mitteilen, um sie in einem neuen Fenster zu öffnen.

So etwas wie GoToURL('www.yahoo.com', true) wo True bezieht sich auf das Öffnen in einem neuen Fenster.

Da ich Flash nicht geöffnet habe, ist meine Syntax wahrscheinlich deaktiviert.

Hoffentlich ist dies genug, um loszulegen.

+0

Vielen Dank für Ihre Hilfe Tom, ich habe Ihren Code wie oben gezeigt dem Objekt-Tag hinzugefügt und es funktioniert immer noch nicht, vielleicht mache ich es falsch? Prost, Keith –

0

Sie müssen dies mit Actionscript in Flash tun

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

eine MovieClip- machen, dass die ganze Szene füllt, und geben Sie ihm den Namen btnMovieClip. Fügen Sie den obigen Code in einen Frame in Ihrer Timeline ein.

+0

Danke Eibx, leider hat die Firma mir nur das Flash-Banner, es ist ziemlich seltsam in Ordnung –

+0

Oh. Ich verstehe, aber gern geschehen. –