2013-03-25 42 views
4

是否可以創建這樣的事件?如果是,如何?如何檢測Flash電影何時在Javascript代碼中獲得焦點?

Flash電影的標記就像下一個。無需更改Flash影片的ActionScript代碼。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="32" height="32"> 
    <param name="movie" value="file://test.swf"> 
    <param name="quality" value="high"> 
    <embed src="file://test.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="32" height="32"> 
    </embed> 
</object> 

回答

0

是的,你可以在JavaScript中這樣做。

首先,使用swfobject來處理跨瀏覽器Flash問題是一個好主意。這是一個控制SWF對象的JavaScript庫。你可以在這裏下載:https://code.google.com/p/swfobject/downloads/list

基本示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head> 
    <title>SWFObject - low level dynamic publishing example</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <script type="text/javascript" src="swfobject.js"></script> 
    <script type="text/javascript"> 
    if (swfobject.hasFlashPlayerVersion("6.0.0")) { 
     var fn = function() { 
     var att = { data:"test.swf", width:"780", height:"400" }; 
     var par = { flashvars:"foo=bar" }; 
     var id = "replaceMe"; 
     var myObject = swfobject.createSWF(att, par, id); 
     }; 
     swfobject.addDomLoadEvent(fn); 
    } 
    </script> 
    </head> 
    <body> 
    <div id="replaceMe">Alternative content</div> 
    </body> 
</html> 

接下來,就擴大與ATT變量中的ID,像這樣的例子:

var att = { data:"test.swf", width:"780", height:"400", id:"myId" }; 

您可以通過訪問對象getElementById()或jQuery選擇器$("#myId")

然後附加一個事件焦點像這樣:

JQuery的:(推薦)

$('#myId').focus(function() { 
    alert('SWF is in focus'); 
}); 

標準:

object.onfocus=function(){ alert('SWF is in focus'); } 
+0

這可惜的是並不爲我工作。 – 2014-03-05 20:45:38