setClipboard10.swf

2009/02/02
// [概要]
// - Flashでボタン生成 → ボタンを押すとクリップボードに値が代入される
// - FlashPlayer10対応
// [詳細]
// - パラメーター
// -- label  = ボタンのラベル
// -- value  = ボタンを押した時にクリップボードに代入される値
// -- htmlid = ボタンを押した時にクリップボードに代入される値を持ったタグのID (htmlid.value || htmlid.innerHTML)
// -- js     = ボタンを押した時に実行されるJavaScript 戻り値がクリップボードに代入される
// -- 重複時の優先度:js > htmlid > value
// - HTML
// -- JavaScriptが無効になっている可能性を考えると、SWFObject+noscriptタグを使うか、常にvalueを指定しておいた方が良いかと思われます。
// -- objectタグのid属性値と、embedタグのname属性値にはexternalが必ず要るようです(InternetExplorerの仕様らしい)
// -- パラメーターはFlashVars でも QueryString でも多分OK

サンプル1 パラメーターで直接指定

<object id="external_setclipboard1" width="120" height="22" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="setClipboard10.swf" />
<param name="FlashVars" value="value=サンプル1" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowScriptAccess" value="sameDomain" />
<embed name="external_setclipboard1" width="120" height="22" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
 src="setClipboard10.swf"
 FlashVars="value=サンプル1"
 quality="high"
 bgcolor="#FFFFFF"
 allowscriptaccess="sameDomain"
 />
</object>

サンプル2 タグの値を使用(JavaScript必須)

<span id="sample2" style="display:none">サンプル2</span>
<object id="external_setclipboard2" width="120" height="22" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="setClipboard10.swf" />
<param name="FlashVars" value="htmlid=sample2" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowScriptAccess" value="sameDomain" />
<embed name="external_setclipboard2" width="120" height="22" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
 src="setClipboard10.swf"
 FlashVars="htmlid=sample2"
 quality="high"
 bgcolor="#FFFFFF"
 allowscriptaccess="sameDomain"
 />
</object>
javascript:document.getElementById('sample2').innerHTML='hoge';eval()
javascript:document.getElementById('sample2').innerHTML='ほげ';eval()

サンプル3 textarea使用(JavaScript必須)

<textarea id="sample3">サンプル3</textarea>
<object id="external_setclipboard3" width="120" height="22" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="setClipboard10.swf" />
<param name="FlashVars" value="htmlid=sample3&label=コピー" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowScriptAccess" value="sameDomain" />
<embed name="external_setclipboard3" width="120" height="22" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
 src="setClipboard10.swf"
 FlashVars="htmlid=sample3&label=コピー"
 quality="high"
 bgcolor="#FFFFFF"
 allowscriptaccess="sameDomain"
 />
</object>

サンプル4 select使用(JavaScript必須)

<select id="sample4" multiple="multiple">
	<option>1</option>
	<option value="option2!" selected="selected">2</option>
	<option>3</option>
</select>
<object id="external_setclipboard4" width="120" height="22" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="setClipboard10.swf" />
<param name="FlashVars" value="htmlid=sample4&label=COPY" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowScriptAccess" value="sameDomain" />
<embed name="external_setclipboard4" width="120" height="22" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
 src="setClipboard10.swf"
 FlashVars="htmlid=sample4&label=COPY"
 quality="high"
 bgcolor="#FFFFFF"
 allowscriptaccess="sameDomain"
 />
</object>
innerHTML より value 優先  複数選択した場合、\r\nで区切ります。

サンプル5 JavaScript使用(JavaScript必須)

<script type="text/javascript">
function sample5() {
	alert(5);
	return new Date() +"\r\n"+ (5*25);
}
</script>
<object id="external_setclipboard5" width="120" height="22" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="setClipboard10.swf" />
<param name="FlashVars" value="js=sample5()&label=COPY" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowScriptAccess" value="sameDomain" />
<embed name="external_setclipboard5" width="120" height="22" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
 src="setClipboard10.swf"
 FlashVars="js=sample5()&label=COPY"
 quality="high"
 bgcolor="#FFFFFF"
 allowscriptaccess="sameDomain"
 />
</object>

サンプル6 重複

<textarea id="sample6">サンプル6</textarea>
<script type="text/javascript">
function sample6() {
	alert(6);
	return new Date() +"\r\n"+ (6*25);
}
</script>
<object id="external_setclipboard6" width="120" height="22" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param name="movie" value="setClipboard10.swf" />
<param name="FlashVars" value="value=VALUE&htmlid=sample6&js=sample6()&label=重複1&label=重複2" />
<param name="bgcolor" value="#FFFFFF" />
<param name="allowScriptAccess" value="sameDomain" />
<embed name="external_setclipboard6" width="120" height="22" align="middle" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
 src="setClipboard10.swf"
 FlashVars="value=VALUE&htmlid=sample6&js=sample6()&label=重複1&label=重複2"
 quality="high"
 bgcolor="#FFFFFF"
 allowscriptaccess="sameDomain"
 />
</object>
javascript:sample6 = null;eval()

サンプル7 SWFObject使用(JavaScript必須)

<div id="swf_container7" style="width:120px; height:22px">
<noscript style="color:red">JavaScriptを有効にしてください。</noscript>
</div>
<script type="text/javascript" src="/js/swfobject.js"></script>
<script type="text/javascript">
var so = new SWFObject("setClipboard10.swf", "external_setclipboard7", 120, 22, 8, "#FFFFFF");
so.addParam("bgcolor", "#FFFFFF");
so.addParam("allowScriptAccess", "sameDomain");
so.addVariable("label", "゚д゚");
so.addVariable("value", 'おわり');
so.write("swf_container7");
</script>
JavaScriptが無効になっている可能性を考えると、SWFObject+noscriptタグを使うか、常にvalueを指定しておいた方が良いかと思われます。