2012-05-29 16 views
0

我有一個帶有幾個silverlight嵌入對象的頁面。一名球員是可見的,其他人都隱藏(顯示:無)。當我點擊縮略圖時,代碼克隆相應的隱藏對象,並用此克隆對象替換可見播放器。克隆Silverlight嵌入對象會產生一個空白的元素

這適用於Firefox,Chrome和IE9,但在IE8中無法正常工作。可見的玩家被取代,但是這導致了一個白色的空白silverlight玩家。如果你右鍵單擊這個白色元素,它會顯示一個silverlight上下文菜單,但沒有其他。控制檯或其他線索沒有錯誤。

這個問題的網站在網上:http://www.vioranje.nl
打開它在IE8,點擊標題欄「網絡afleveringen」下方的播放按鈕,看看會發生什麼。

這是jQuery的代碼克隆的Silverlight播放器(這是附着在縮略圖的單擊事件處理程序):

var embedType = (element.data().embedtype) ? element.data().embedtype : 'object'; 
var $embed = $element.find('.large .embed '+embedType); 
var $newplayer = $(this).find('.embed'); 
var newplayerHTML = $newplayer.html(); 
var $newplayerInstance = $(newplayerHTML); 
$embed.replaceWith($newplayerInstance); 
$newplayerInstance.show(); 

我能做些什麼來解決這個問題呢?

回答

1

我試着調試你的情況下,它像接縫處理IE8標籤,並將其重新寫爲如下:

<OBJECT data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAJAACuLQAAuh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" width=442 type=application/x-silverlight-2 height=307 checkedByCssHelper="true"></OBJECT> 

這顯然失去你傳遞給Silverlight視頻播放器的參數目的。

這裏有技巧,可以幫助您解決您的問題對於所有瀏覽器, 嘗試使用,而不是使用隱藏您的嵌入標籤, 通過使用標籤..您的Silverlight代碼不會被同時其隱藏運行,因爲它將被視爲文本而不是HTML代碼。

所以在你HTML模板代碼 「tpl_rtlxlvideo」:

替換:

<div class="embed" style="display: none;">{YOUR OBJECT TAG}</div> 

有了:

<textarea class="embed" style="display: none;">{YOUR OBJECT TAG}</textarea> 

而對於JavaScript端

替換:

var newplayerHTML = $newplayer.html(); 

有了:

var newplayerHTML = $newplayer.val(); 

希望幫助你:)

+0

非常感謝你,穆尼爾阿布新月!這是一個簡單而好的解決方案! – Dreamdealer

+1

我很高興該解決方案幫助您,歡迎:) –