Javascript in ActionScript
wonderfl throws "security error #2060"
* please see http://swf.wonderfl.net/swf/usercode/a/a5/a5f3/a5f3004f642cef37044d6564859cccaef2bf6152.swf
*
*
* JSAdd()
*
* <script>タグに埋め込む内容をinputAreaに入力し、JSADD()ボタンを押すと
* htmlの<head>要素の<script>タグにその内容を追加します。
* .jsファイルの中身なんかを入れるといいと思います。
* -- sample --
* var a = 0;
* function usagi()
* {
* a++
* alert(a);
* }
* -- --
*
*
* JSCall()
*
* 実行するJavascriptを入力し、JSCall()ボタンを押すと、
* 入力されたJavascriptが実行されます。
* URL欄に打ち込む"javascript:function F(){~~}F()の~~みたいなものを入れるといいと思います。
* -- sample --
* alert("call sample");
* usagi();
* -- --
*
/**
* Copyright cpu_t ( http://wonderfl.net/user/cpu_t )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/nG3p
*/
/* wonderfl throws "security error #2060"
* please see http://swf.wonderfl.net/swf/usercode/a/a5/a5f3/a5f3004f642cef37044d6564859cccaef2bf6152.swf
*
*
* JSAdd()
*
* <script>タグに埋め込む内容をinputAreaに入力し、JSADD()ボタンを押すと
* htmlの<head>要素の<script>タグにその内容を追加します。
* .jsファイルの中身なんかを入れるといいと思います。
* -- sample --
* var a = 0;
* function usagi()
* {
* a++
* alert(a);
* }
* -- --
*
*
* JSCall()
*
* 実行するJavascriptを入力し、JSCall()ボタンを押すと、
* 入力されたJavascriptが実行されます。
* URL欄に打ち込む"javascript:function F(){~~}F()の~~みたいなものを入れるといいと思います。
* -- sample --
* alert("call sample");
* usagi();
* -- --
*
*/
package {
import flash.text.TextFormat;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.external.ExternalInterface;
import flash.display.Sprite;
public class FlashTest extends Sprite
{
public function FlashTest()
{
// addChild(textField, buttons)
createUI();
try
{
ExternalInterface.call("function(){alert('lets start!');}");
}
catch(e:Error)
{
print(e.toString());
}
}
private function JSCall(script:String):*
{
print("JSCall()\n");
script="function(){"+script+"}";
return ExternalInterface.call(script);
}
private function JSAdd(script:String):*
{
print("JSAdd\n");
var appendScript:String=
"function(script){\n"+
"var element=document.createElement('script');\n"+
"element.innerHTML=script;\n"+
"var head=document.getElementsByTagName('head').item(0);\n"+
"head.appendChild(element);\n"+
"}";
return ExternalInterface.call(appendScript,script);
}
private function callBtnHandler(e:MouseEvent):void
{
var script:String=tfIn.text;
//print("callBtnHandler:\n"+script+"\n");
var result:*=JSCall(script);
print("result:"+result+"\n");
}
private function addBtnHandler(e:MouseEvent):void
{
var script:String=tfIn.text;
//print("addBtnHandler\n"+script+"\n");
var result:*=JSAdd(script);
print("result:"+result+"\n");
}
private var tfOut:TextField;
private var tfIn:TextField;
private function print(msg:String):void
{
tfOut.appendText(msg);
}
private function createUI():void
{
tfOut=new TextField();
tfOut.multiline=true;
tfOut.width=stage.stageWidth/2;
tfOut.height=stage.stageHeight-30;
tfOut.y=30;
tfOut.background=true;
tfOut.backgroundColor=0xFFFFFF;
tfOut.defaultTextFormat=new TextFormat("Arial",null,0x000000);
addChild(tfOut);
tfOut.text="<-outputArea : inputArea->\n";
tfIn=new TextField();
tfIn.type="input";
tfIn.multiline=true;
tfIn.wordWrap=true;
tfIn.width=stage.stageWidth/2;
tfIn.height=stage.stageHeight-30;
tfIn.x=stage.stageWidth/2;
tfIn.y=30;
tfIn.background=true;
tfIn.backgroundColor=0x000000;
tfIn.defaultTextFormat=new TextFormat("Arial",null,0xC0C0C0);
addChild(tfIn);
var btnCall:Sprite=new Sprite();
btnCall.graphics.lineStyle(1,0);
btnCall.graphics.beginFill(0,0);
btnCall.graphics.drawRect(0,0,60,30);
btnCall.x=5;
addChild(btnCall);
var txCall:TextField=new TextField();
txCall.defaultTextFormat=new TextFormat("Arial");
txCall.text="JSCall()";
txCall.autoSize="left";
txCall.selectable=false;
txCall.x=btnCall.width/2-txCall.width/2;
txCall.y=btnCall.height/2-txCall.height/2;
btnCall.addChild(txCall);
btnCall.addEventListener(MouseEvent.MOUSE_DOWN,callBtnHandler);
var btnAdd:Sprite=new Sprite();
btnAdd.graphics.lineStyle(1,0);
btnAdd.graphics.beginFill(0,0);
btnAdd.graphics.drawRect(0,0,60,30);
btnAdd.x=75;
addChild(btnAdd);
var txAdd:TextField=new TextField();
txAdd.defaultTextFormat=new TextFormat("Arial");
txAdd.text="JSAdd()";
txAdd.autoSize="left";
txAdd.selectable=false;
txAdd.x=btnAdd.width/2-txAdd.width/2;
txAdd.y=btnAdd.height/2-txAdd.height/2;
btnAdd.addChild(txAdd);
btnAdd.addEventListener(MouseEvent.MOUSE_DOWN,addBtnHandler);
var btnClean:Sprite=new Sprite();
btnClean.graphics.lineStyle(1,0);
btnClean.graphics.beginFill(0,0);
btnClean.graphics.drawRect(0,0,60,30);
btnClean.x=stage.stageWidth-60;
addChild(btnClean);
var txClean:TextField=new TextField();
txClean.defaultTextFormat=new TextFormat("Arial");
txClean.text="clean";
txClean.autoSize="left";
txClean.selectable=false;
txClean.x=btnClean.width/2-txClean.width/2;
txClean.y=btnClean.height/2-txClean.height/2;
btnClean.addChild(txClean);
btnClean.addEventListener(MouseEvent.MOUSE_DOWN,function(e:MouseEvent):void
{
tfIn.text="";
tfOut.text="";
});
}
}
}