Javascript 은 Silverlight Plugin 을 만 들 고 nonSilverlight 와 low Silverlight 스타일 을 사용자 정의 합 니 다.

9876 단어 JavascriptSilverlight
기본 적 인 상황 에서 생 성 된 페이지 코드 는 다음 코드 와 유사 할 수 있 습 니 다.
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>IRERTranscript</title>
<style type="text/css">
html, body {
height: 100%;
overflow: auto;
}
body {
padding: 0;
margin: 0;
}
#silverlightControlHost {
height: 100%;
text-align:center;
}
</style>
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript">
function onSilverlightError(sender, args) {
var appSource = "";
if (sender != null && sender != 0) {
appSource = sender.getHost().Source;
}
var errorType = args.ErrorType;
var iErrorCode = args.ErrorCode;
if (errorType == "ImageError" || errorType == "MediaError") {
return;
}
var errMsg = "Unhandled Error in Silverlight Application " + appSource + "
" ;
errMsg += "Code: "+ iErrorCode + "
";
errMsg += "Category: " + errorType + "
";
errMsg += "Message: " + args.ErrorMessage + "
";
if (errorType == "ParserError") {
errMsg += "File: " + args.xamlFile + "
";
errMsg += "Line: " + args.lineNumber + "
";
errMsg += "Position: " + args.charPosition + "
";
}
else if (errorType == "RuntimeError") {
if (args.lineNumber != 0) {
errMsg += "Line: " + args.lineNumber + "
";
errMsg += "Position: " + args.charPosition + "
";
}
errMsg += "MethodName: " + args.methodName + "
";
}
throw new Error(errMsg);
}
</script>
</head>
<body>
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/example.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50401.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="slExample" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>
</body>
</html>
저 희 는 object 대상 에 게 서로 다른 매개 변 수 를 전달 할 수 있 습 니 다.예 를 들 어 xap 가방 의 로드 주소,onLoad 또는 onError 이벤트 핸들,배경 색,최소 버 전 번호 지원 등 입 니 다.완전한 매개 변수 정 보 는 독자 가 Silverlight 3 의 param 매개 변수 목록 을 참고 하여 모 을 수 있 습 니 다.object 대상 에는 일반적으로태그 가 포함 되 어 있 습 니 다.클 라 이언 트 브 라 우 저가 Silverlight 플러그 인 을 설치 하지 않 았 을 때 표시 할 내용 을 표시 하 는 데 사 용 됩 니 다.예 를 들 어 <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="ClientBin/example.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="4.0.50401.0" /> <param name="autoUpgrade" value="true" /> <img src="/images/NonSilverlight.jpg" style="border-style: none" usemap="#NonSilverlight" /> <map name="NonSilverlight" id="NonSilverlight"> <area shape="RECT" coords="154,87,362,183" title="Get Microsoft Silverlight" href="http://www.microsoft.com/silverlight/resources/install.aspx" target="_blank" /> </map> </object> 클 라 이언 트 브 라 우 저가 Silverlight 플러그 인 을 설치 하지 않 았 을 때 프로그램 은 해당 지역 에 열 영역 이 있 는 그림 을 표시 합 니 다.핫 존 이 가리 키 는 위 치 는 Microsoft 가 제공 하 는 Silverlight 설치 주소 입 니 다.이론 적 으로 nonSilverlight 의 효 과 를 표시 하기 위해 사용자 정의 코드 를 지정 할 수 있 지만 Silverlight 는 기본적으로 저 버 전의 Silverlight 상황 에서 표시 할 효 과 를 제공 하지 않 습 니 다.즉,low Silverlight 의 경우 입 니 다.Silverlight 는 자동 으로 앞으로 호 환 됩 니 다.즉,낮은 버 전에 서 컴 파일 된 Silverlight 패 키 지 는 높 은 버 전에 서 실 행 될 수 있 습 니 다.반대로 높 은 버 전에 서 컴 파일 된 Silverlight 패 키 지 는 더 이상 낮은 버 전에 서 실 행 될 수 없습니다.이 때 Silverlight 플러그 인 은 기본 그림 을 표시 하여 사용자 에 게 플러그 인 업 그 레이 드 를 알 리 고 알림 상 자 를 팝 업 합 니 다.다음 그림:
 

 
개인 적 으로 이런 사용자 체험 이 좋 지 않다 고 생각 합 니 다.현재 페이지 에 Silverlight 플러그 인 이 여러 개 있다 면 여러 개의 알림 상 자 를 팝 업 해 야 하지 않 겠 습 니까?그렇다면 이 문 제 를 어떻게 해결 할 것 인가?사실 우 리 는 페이지 에 object 표 시 를 직접 추가 하여 Silverlight 를 보 여 주 는 것 외 에 자바 script 스 크 립 트 를 통 해 Silverlight 를 동적 으로 추가 할 수 있 습 니 다.Silverlight.js 스 크 립 트 는 우리 에 게 일련의 사용 가능 한 방법 을 제공 합 니 다.상세 한 내용 은 msdnhttp://msdn.microsoft.com/zh-cn/library/cc838126(v=VS.95).aspx#isinstalled을 참고 하 시기 바 랍 니 다.
스 크 립 트 를 통 해 페이지 에 Silverlight 를 추가 하 는 방법http://msdn.microsoft.com/zh-cn/library/cc265155(v=VS.95).aspx
msdn 에 서 는 이러한 스 크 립 트 방법 을 사용 하 는 방법 에 대해 매우 상세 한 예 를 들 어 알려 주 었 습 니 다.한 가지 주의 할 점 이 있 습 니 다.Silverlight.js 파일 을 사용 할 때 현재 Silverlight 버 전과 일치 해 야 합 니 다.그렇지 않 으 면 스 크 립 트 오류 가 발생 할 수 있 습 니 다.대응 하 는 Silverlight.js 파일 은 마이크로소프트 사이트 에서 다운로드 할 수 있 습 니 다.실제로 사용 가능 한 버 전이 많 습 니 다.디 버 깅 을 지원 하 는 버 전도 포함 되 어 있 습 니 다.
createObject 방법 매개 변 수 를 사용 할 때 몇 가지 문제 가 있 습 니 다.
1.매개 변 수 는 순서대로 지정 합 니 다.전달 할 필요 가 없 는 매개 변 수 는 null 로 대체 할 수 있 습 니 다.
2.parent element 인 자 는 반드시 지정 해 야 합 니 다.즉,object 가 표시 한 부모 요소 입 니 다.요소 의 id 를 대상 으로 직접 전송 할 수 있 지만 Firefox 에 서 는 지원 되 지 않 습 니 다.이 때 document.getElement ById('element Id')문 구 를 사용 하여 이 인 자 를 대체 할 수 있 습 니 다.
3.param 목록 은 배열 을 통 해 전달 되 며,매개 변수 이름 은 object 태그 에서 사용 하 는 이름과 일치 하면 됩 니 다.
4.이벤트 목록 에 대응 하 는 페이지 스 크 립 트 가 없 으 면 null 값 을 전송 합 니 다.그렇지 않 으 면 스 크 립 트 오류 가 발생 합 니 다.
5.마지막 매개 변수 context 가 필요 하지 않 으 면 null 이나 빈 값 을 전달 하지 않 아 도 됩 니 다.
createObject 방법 을 사용 할 때 Silverlight 에 nonSilverlight 효 과 를 지정 할 수 있 습 니 다.이것 은 param 목록 의 altHtml 매개 변 수 를 통 해 지정 한 것 입 니 다.실시 에 있어 서 저 희 는 페이지 에 object 표 시 를 직접 사용 하여 Silverlight 를 표시 할 때 도 alt 속성 으로 nonSilverlight 효 과 를 지정 할 수 있 습 니 다.이것 은 object 태그 에 html 코드 를 직접 삽입 하 는 효과 와 같 습 니 다.createObject 방법 을 사용 하면 lowSilverlight 효 과 를 사용자 정의 할 수 있 습 니 다.다음은 하나의 예 입 니 다.
 
<div id="divSilverlightContent">
<script type="text/javascript">
if (Silverlight.isInstalled("4.0.50303.0")){
Silverlight.createObject("ClientBin/SilverlightApplication1.xap",
document.getElementById('divSilverlightContent'),
null,
{ width: "532px", height: "380px", background: "white", version:"4.0.50303.0", windowless:"true" },
null,
"param1=value1,param2=value2");
}
else {
document.write('<img src="images/NonSilverlight.jpg" style="border-style: none" usemap="#SLMap3D_NonSilverlight" />'
+ '<map name="NonSilverlight" id="NonSilverlight">'
+ '<area shape="RECT" coords="154,87,362,183" title="Get Microsoft Silverlight" href="http://www.microsoft.com/silverlight/resources/install.aspx" target="_blank" />'
+ '</map>');
}
</script>
<iframe style='visibility: hidden; height: 0; width: 0; border: 0px'></iframe>
</div>
Silverlight.isInstalled()방법 으로 클 라 이언 트 브 라 우 저 에 지정 한 버 전의 Silverlight 플러그 인 이 설치 되 어 있 는 지 판단 할 수 있 습 니 다.설치 되 어 있 으 면 Silverlight.createObject 방법 으로 Silverlight 대상 을 만 듭 니 다.그렇지 않 으 면 사용자 정의 내용 을 출력 합 니 다.여기에 개인 적 으로 매우 유용 하 다 고 생각 하 는 문장 이 하나 더 있 으 니 여러분 께 공유 해 드 리 겠 습 니 다!
http://www.itstrike.cn/Question/Use-JavaScript-to-create-Silverlight-Object-createObject

좋은 웹페이지 즐겨찾기