2009-07-21 61 views
0

當用戶沒有安裝Silverlight顯示我的Flickr Silvrlight應用程序時,我想顯示一個Flickr徽章作爲備用內容。這適用於Firefox,但不適用於IE:<object>包含腳本標記的備用內容在IE中不會document.write

<object width="100%" height="100%" type="application/x-silverlight-2" data="data:application/x-silverlight-2," id="SilverlightObject"> 
    <param value="/ClientBin/FlickrSilverlightApp.xap" name="source"/>  
    <param value="2.0.31005.0" name="minruntimeversion"/> 
    <!-- Flickr Photos --> 
    <div id="flickrbadge"> 
     <h3 class="subheading">Flickr Photos<a target="_blank" href="http://www.flickr.com/photos/tags/monkey/">View All</a></h3> 
     <script src="http://www.flickr.com/badge_code_v2.gne?count=8&amp;display=latest&amp;size=s&amp;layout=x&amp;source=all_tag&amp;tag=monkey" type="text/javascript"></script> 
    </div> 
</object> 

正在顯示h3標記內容,但Flickr標記不是。我查看了Flickr徽章代碼的功能。這不是什麼幻想,但它確實document.write一些內容。 IE不支持標籤內的document.write嗎?如果不是,我該如何解決它?

回答

1

也許你應該改變這個問題?如果用戶沒有安裝Silverlight,您應該將對象標籤替換爲Flickr徽章src鏈接,而不是將Flickr徽標放在對象標籤內。

(使用jQuery爲了簡潔)

$(document).ready(function() { 
    if(!Silverlight.IsInstalled()) { 
    $("#SilverlightObject").replaceWith("<div id="flickrbadge"><h3 class="subheading">Flickr Photos<a target="_blank" href="http://www.flickr.com/photos/tags/monkey/">View All</a></h3><script src="http://www.flickr.com/badge_code_v2.gne?count=8&amp;display=latest&amp;size=s&amp;layout=x&amp;source=all_tag&amp;tag=monkey" type="text/javascript"></script></div>"); 

}) 

當然,而不是大的長字符串,你可以只是把Flickr的徽章DIV +內容的頁面上顯示:未設定,然後抓住它從DOM中插入並將其插入到您想要的位置。不利的一點是,即使你不使用它,腳本也會下載並執行,導致額外的請求。

3

是不是應該是<script src="..."></script>

+0

它由/結尾關閉: corymathews 2009-07-22 17:26:41

+0

已將代碼示例更新爲。仍然沒有執行。 – 2009-07-22 17:50:32

1

在腳本here的document.write中有一些細節。我意識到這個特定的腳本不在你的控制範圍之內,但它可能會讓你看到爲什麼你會看到行爲上的差異。

我試過你在IE上的徽章鏈接,它沒有生成正確的片段,直到我解碼了& amp;到&。

HTML和XHTML之間處理內容有一些差異。檢查您的頁面是否以XHTML格式傳遞給FF,以HTML格式傳遞給IE。但是,這隻影響內容,不應該對使用src屬性的腳本有任何影響。

對於IE,您可能想嘗試使用defer屬性。雖然,這是IE特有的,我不知道其他瀏覽器是否會忽略它或barf。

添加一個以覆蓋用戶禁用JS的情況。我不認爲這是你的問題,但添加是件好事。

相關問題