JavaScript에서 관리 코드 호출
XAML 코드에 클라이언트 스크립트를 바인딩하려면
파일 위쪽에서 using 또는 Imports 문을 추가하여 System.Windows.Browser 네임스페이스를 가져옵니다.
// HtmlDocument requires using System.Windows.Browser;
HtmlDocument doc = HtmlPage.Document;
//Enable the HTML textbox on the page and say hello
doc.GetElementById("Text1").SetProperty("disabled", false);
doc.GetElementById("Text1").SetAttribute("value", "This text set from managed code.");
(실버라이트에서 자바스크립트 호출)
aspx 페이지의 자바스크립트
<script>
function TestBtn2(str) {
slCtl.Content.mySLapp.Name = str;
}
function TestBtn() {
alert(slCtl.Content.mySLapp.Name);
}
</script>
실버라이트 cs 페이지
HtmlPage.Window.Invoke("Test", "");
또다른 방법
HtmlElement script = HtmlPage.Document.CreateElement("script");
script.SetAttribute("type", "text/javascript");
script.SetProperty("text", "alert('A')");
HtmlPage.Document.DocumentElement.AppendChild(script);
관리 코드에 대한 클라이언트 스크립트 액세스 테스트
실버라이트 페이지에 외부페이지와 스크립트 호출을 할수 있는 클래스를 만듭니다
using System.Windows.Browser;
namespace SilverlightApplicationCardTest
{
public class MyScriptableManagedType
{
[ScriptableMember()]
public string MyToUpper(string str) {
return str.ToUpper();
}
[ScriptableMember()]
public string Name { get; set; }
}
}
App.xaml
페이지에서 외부에서 호출할 이름을 등록해줍니다
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new Page();
//Set up some scriptable managed types for access from Javascript.
MyScriptableManagedType smt = new MyScriptableManagedType();
HtmlPage.RegisterScriptableObject("mySLapp", smt);
}
실버라이트가 포함된 페이지에서 처리부분
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript">
var slCtl = null;
function embedSilverlight(parentElement, pluginId, userContext) {
var altHtml = pluginId == "sl1" ? null : "<!--not installed-->";
return Silverlight.createObject("ClientBin/SilverlightApplicationCard.xap",
parentElement, pluginId,
{
width: "540", height: "340",
background: "white", alt: altHtml,
minRuntimeVersion: "2.0.30908.0", autoUpgrade: true
},
{ onError: onSLError, onLoad: onSLLoad },
"param1=value1,param2=value2", userContext);
}
function onSLLoad(plugIn, userContext, sender) {
slCtl = sender.getHost(); //HTML 버젼
//// ASPX version
///slCtl = sender.get_element();
alert(slCtl.Content.mySLapp.MyToUpper("Test String")); //실제로 잘 불러와지는지 테스트
window.status += plugIn.id + " loaded into " + userContext + ". ";
}
function onSLError(sender, args) {
// Display error message.
}
</script>
</head>
<body style="height:100%;margin:0;">
<form id="form1" runat="server" style="height:100%;">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div id="sl2Host">
<script type="text/javascript">
embedSilverlight(sl2Host, "sl2", "row2"); //실버라이트 바인딩
</script>
</div>
<input type="button" onclick="TestBtn()" value="실버라이트 값 자겨오기" />
<input type="button" onclick="TestBtn2('kojaedoo')" value="실버라이트 값 세팅하기" />
</form>
</body>
</html>
'C#.NET' 카테고리의 다른 글
DIV 태그로 전체화면 채우기 (0) | 2009.11.30 |
---|---|
실버라이트3 외부실행 만들기 (0) | 2009.11.30 |
클래스 라이브러리에서 web.config 접속정보 읽어오기 (0) | 2009.11.30 |
BLOB 저장된 이미지 웹상에 출력하기 (0) | 2009.11.30 |
오라클 트렌젝션 사용하기 (0) | 2009.11.30 |
[마스터페이지 , masterpage ] PreviousPage 마스터페이지 컨트롤러에 접근 (0) | 2009.05.20 |
Creating a modular application using Prism V2 - Screencast 1/4 : Creating a shell and modules (0) | 2009.05.12 |
Downloading Files with the WebRequest and WebResponse Classes (0) | 2009.05.01 |
SyntaxHighlighter for Windows Live Writer (0) | 2009.04.30 |
[ setInterval ] 일정시간 반복 작업하기 (0) | 2009.04.07 |