ブラウザでのswf2度クリック対策

2007/12/18

参照リンク

  1. 現在ブラウザでは、swfを2度クリックしないと確定できない。
  2. MSの特許侵害の影響によるブラウザの下記仕様変更のためです。
    1. HTMLファイルにobject、embed、および applet タグがあると、1度目選択2度目で確定。
  3. これを防ぐため、外部JavaScriptファイルで、swf用タグなどを書き出す。という対策がとられている。

writeflash.js 書き出し用関数JavaScriptファイル

function writeflash(swf, width, height, bgcolor){
    var tag="";
    tag+="<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"+width+"' height='"+height+"' align='middle'>";
    tag+="<param name='allowScriptAccess' value='sameDomain' />";
    tag+="<param name='movie' value='"+swf+"' />";
    tag+="<param name='quality' value='high' />";
    tag+="<param name='bgcolor' value='"+bgcolor+"' />";
    tag+="<embed src='"+swf+"' quality='high' bgcolor='"+bgcolor+"' width='"+width+"' height='"+height+"' align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />";
    tag+="</object>";
    document.write(tag);
}

備考)JavaScriptでswfを参照するための属性は省略(objectタグのid属性)(embedタグのname属性)

 

writeflash関数使用例

<head>
<script type="text/javascript" src="/koshi/js/writeflash.js"></script>
<meta httpequiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>ActionScript</title>
</head>

以下はswfを挿入したいところに記述
<script type="text/javascript">
<!--
writeflash("tokei_digi.swf", 300, 100,"#ffffff");
// -->
</script>
<noscript>
JavaScript対応ブラウザで表示してください。
</noscript>