代码之家  ›  专栏  ›  技术社区  ›  Jon Galloway

<object>包含脚本标记的替代内容将不会记录。请在IE中写入

  •  0
  • Jon Galloway  · 技术社区  · 15 年前

    当用户没有安装Silverlight来显示我的Flickr Silverlight应用程序时,我希望将Flickr徽章显示为备用内容。这适用于Firefox,但不适用于IE:

    <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徽章代码的功能。这没什么特别的,但它确实记录了一些内容。IE不支持document.write在标签内吗?如果没有,我应该如何解决它?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Adrian Godong    15 年前

    难道不是吗 <script src="..."></script>

        2
  •  1
  •   Franci Penov    15 年前

    关于document.write-in脚本有一些详细信息 here . 我知道这个脚本不在您的控制范围之内,但它可能会让您了解为什么您会看到行为上的差异。

    我尝试了你在IE上的徽章链接,但直到我解码了&amp;到&。

    对于IE,您可能需要尝试“延迟”属性。不过,它是IE特有的,我不知道其他浏览器会不会忽略它,或者对它发飙。

    添加一个示例以涵盖用户禁用JS的情况。我不认为这是你的问题,但补充一点是件好事。

        3
  •  1
  •   ScottKoon    15 年前

    也许你应该扭转这个问题?如果用户没有安装Silverlight,您应该用Flickr badge 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-badge-div+内容放在设置了display:none的页面上,然后从DOM中抓取它并将其插入您想要的位置,而不必使用长字符串。这样做的缺点是,即使您不使用脚本,脚本也会下载并执行,从而导致产生额外的请求。