태그 보관물: JavaScript

URLNavigator has been modified.

URLNavigator 클래스를 수정하여 링크 이동 뿐 아니라, 자바스크립트도 실행이 가능하도록 수정하였습니다.
아래 코드와 같이 URLNavigator.callJS() 메소드를 통해서 자바스크립트 함수를 호출 할 수 있습니다.
I modified the URLNavigator class to add calling JavaScript function feature. You can use URLNavigator.callJS() method to call a JavaScript function like this.
URLNavigatorクラスを改めてJavaScript函数を呼び出すことが出来るようにしました。下のコードのように、URLNavigator.callJS()メソッドを通じてJavaScript函数を実行出来ます。
1
2
3
4
import com.hangunsworld.net.URLNavigator;
var un:URLNavigator = new URLNavigator();
un.callJS("functionName");
un.callJS("functionName", param1, param2, ..., paramN);
또는 다음과 같이 링크와 자바스크립트가 혼재되어 있는 경우, URLNavigator.analyze() 메소드를 사용할 수 있습니다. 이 경우 타겟이 “javascript”로 설정된 경우 자바스크립트 함수를 실행하고, 이 외의 경우에는 지정된 링크로 이동합니다.
If JavaScript calls are mixed with normal links, use URLNavigator.analyze() method. It calls callJS() method, when the target property is set to “javascript”, otherwise, it goes to the sepcified link.
JavaScriptコルと一般リンクが混じっている場合、URLNavigator.analyze()メソッドを使えます。Targetプロパーティが “javascript”に設定されると、JavaScrpt函数を実行します。その他の場合、リンクに移動します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import	com.hangunsworld.net.URLNavigator;
 
var un:URLNavigator = new URLNavigator();
 
btn1.addEventListener(MouseEvent.CLICK, listener);
btn1.num = 0;
btn2.addEventListener(MouseEvent.CLICK, listener);
btn2.num = 1;
btn3.addEventListener(MouseEvent.CLICK, listener);
btn3.num = 2;
 
var xml:XML = 
<sample>
             <link>
                           <link_url><![CDATA[http://hangunsworld.com]]></link_url>
                           <link_target><![CDATA[_self]]></link_target>
             </link>
             <link>
                           <link_url><![CDATA[test2]]></link_url>
                           <link_target><![CDATA[javascript]]></link_target>
             </link>
             <link>
                           <link_url><![CDATA[test^1^2^3]]></link_url>
                           <link_target><![CDATA[javascript]]></link_target>
             </link>
</sample>;
 
 
function listener(e:MouseEvent):void{
	var mc:MovieClip = e.currentTarget as MovieClip;
	var num:uint = mc.num;
 
	var link:String = xml.link[num].link_url.toString();
	var targ:String = xml.link[num].link_target.toString();
 
	un.analyze(link, targ, e.ctrlKey, e.altKey, "^");
}

[JS] Copying flash object with FlashVars parameter.

IE에서 자바스크립트를 이용하여 플래시 오브젝트를 클립보드로 복사할 때, object 객체를 선택, 복사하면 FlashVars 속성이 누락되어 복사되는 문제가 있습니다. 그러나 embed 객체를 복사하면 그런 문제가 없습니다.

그러므로 아래 코드와 같이 object 객체의 altHtml 속성을 이용하여 embed 객체를 동적으로 생성, 이 embed 객체를 복사하도록 하면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Gets Flash object.
var obj = document.getElementById("flashObjectID");
var alt = obj.altHtml; // embed tag
 
// Creates a temporary embed object in the "tempLayer" layer.
var temp = document.getElementById("tempLayer");
temp.innerHTML = alt;
 
// Selects and copies the temporary embed object to the clipboard.
var range = document.body.createTextRange();
range.moveToElementText(temp);
range.select();
range.execCommand('copy');
range.moveToPoint(0,0);
range.select();
range = null;
 
// Removes the temporary embed object.
temp.innerHTML = "";

IE에서 object 태그를 사용하지 않고 직접 embed 태그만 사용하는 경우나, 파이어폭스 등 비IE 브라우저에서는, 이럴 필요가 없이, 바로 embed 객체를 선택하여 복사해주면 되죠.