<object> альтернативный контент, содержащий тег script, не будет документироваться в IE. - PullRequest
0 голосов
/ 22 июля 2009

Я хотел бы отображать значок Flickr в качестве альтернативного содержимого, когда у пользователя не установлен Silverlight для отображения моего приложения Flickr Silvrlight. Это работает в 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. Ничего особенного, но он делает document.write некоторый контент. IE не поддерживает document.write внутри тега? Если нет, то как мне обойти это?

Ответы [ 3 ]

3 голосов
/ 22 июля 2009

Разве это не должно быть <script src="..."></script>?

1 голос
/ 23 июля 2009

Может быть, вам стоит обратить вспять проблему? Вместо того чтобы иметь значок Flickr внутри тега объекта, вы должны заменить тег объекта ссылкой на значок Flickr src, если у пользователя не установлен Silverlight?

(для краткости используем 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 + content на странице с отображением: ничего не установлено, а затем извлечь его из DOM и вставить в нужное место. Недостатком является то, что скрипт будет загружаться и выполняться, даже если вы его не используете, вызывая дополнительные запросы.

1 голос
/ 22 июля 2009

Есть некоторые подробности о document.write в скриптах здесь . Я понимаю, что этот конкретный сценарий находится вне вашего контроля, но он может пролить свет на то, почему вы видите разницу в поведении.

Я попробовал ссылку на значок, которую вы используете в IE, и она не сгенерировала правильный фрагмент, пока я не декодировал & amp; к &.

Существуют некоторые различия в том, как обрабатывается контент между HTML и XHTML. Проверьте, доставляется ли ваша страница как XHTML для FF и как HTML для IE. Однако это влияет только на содержимое и не должно влиять на сценарии, использующие атрибут src.

Для IE вы можете попробовать атрибут defer. Тем не менее, это специфично для IE, и я не знаю, будут ли другие браузеры игнорировать его или раздражать.

Добавьте a, чтобы охватить случай, когда у пользователя отключен JS. Я не думаю, что это ваша проблема, но это хорошая вещь, чтобы добавить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...