jQuery를 사용하여 동적으로 실버 라이트 객체를 만드는 웹 응용 프로그램이 있습니다.jQuery로 Silverlight 컨테이너 만들기 - IE9에서는 작동하지 않습니다.
이 기능은 Chrome과 Firefox에서는 잘 작동하지만 IE9에서는 제대로 작동하지 않습니다.
여기이 보여주는 jsFiddle의 :이 예에서는 http://jsfiddle.net/Bx9we/5/을의 .XAP 파일에 대한 링크는 가짜입니다,하지만 당신의 브라우저는 적어도 오렌지 배경을 표시해야한다. (실제 응용 프로그램에서는 .XAP 파일로 작업 중이며 Chrome과 Firefox에서는 제대로 표시됩니다.)
가능한 레드 헤링 (Red Herring) : 나는 F12 개발자 도구를 사용하여 생성 된 HTML 찾고 있어요
. 파이어 크롬, 그것은 다음과 같다 :
<object
data="data:application/x-silverlight-2,"
type="application/x-silverlight-2"
id="SilverlightControl" height="292" width="396">
<!-- continued --!>
하지만 IE9에서
, 그것은 다른 값으로 된 데이터 필드를 변형시켰다.<object
id="SilverlightControl"
data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAADtKAAALR4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
width="396"
type="application/x-silverlight-2"
height="292">
<!-- continued --!>
데이터 태그의 변환은 this question에서 논의됩니다.
그냥 경우 jsFiddle가 실행되고 있지 않습니다 :
CSS의
div.overlaid
{
border:3px solid darkgray;
background:black;
height:312px;
width:396px;
position:absolute;
top:50px;
left:50px;
}
.videoPopupCloseLink
{
position:absolute;
bottom:6px;
right:6px;
color:White;
}
html로
<button id="createOverlay">Create Overlay</button>
및 자바 스크립트 :
$(function()
{
$('div.overlaid').remove();
$('#createOverlay').click(function() {
var div = $('<div />')
.addClass('overlaid')
.appendTo('body');
var silverlightSource = './dummy_source.xap';
var fileName='buy_duff_beer.wmv';
var entityId=39874;
var initParams = '<param id="initParams" name="initParams" value="fileName=' + fileName + ',entityid=' + entityId + '" />';
$('<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="SilverlightControl" height="292" width="396" />')
.append($('<param></param>').attr({ name: "source", value: silverlightSource }))
.append("<param name='background' value='orange' />")
.append("<param name='onerror' value='onSilverlightError' />")
.append("<param name='minRuntimeVersion' value='4.0.50826.0' />")
.append("<param name='autoUpgrade' value='true' />")
.append(initParams)
.append('<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"><img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/></a>')
.appendTo(div);
$('<a />')
.addClass('videoPopupCloseLink')
.text('close')
.click(function() { $('div.overlaid').remove() })
.appendTo(div);
}
);
}
);
그냥 추측 - 어쩌면 IE는 append() 명령을 실행하기 전에 SL 응용 프로그램을로드하려고합니까? 한 번에 모든 것을 인스턴스화하여 작동하는지 확인할 수 있습니까? – Sander
공개적으로 액세스 할 수있는 테스트 페이지는 문제를 발견하는 데 매우 유용합니다. – Sander
원래 페이지 (숨김)에서 Silverlight 개체를 사용하는 것이 더 좋지 않겠습니까? 필요하면 JQuery를 사용하여 해당 div로 간단하게 이동 하시겠습니까?JS에서 해당 객체로 호출하는 것은 간단합니다 (예 : 재생할 내용을 알려주는 것). –