Safari не круто с пустыми элементами HTML5; JavaScript это - PullRequest
0 голосов
/ 12 августа 2011

Я использую JavaScript для создания объекта изображения, а затем использую jQuery для изменения его атрибутов, включая функцию .load. После неудачной попытки найти консоль ошибок Safari (версия 5.0.5) (наиболее разочаровывающей, когда, в конце концов, ее было нетрудно найти), мы обнаружили, что Safari прервал свой JavaScript при обнаружении незакрытых тегов img, что, конечно, устарела в HTML5. Я бы просто добавил тег img в функцию, если это не делает добавление функции загрузки довольно кошмарным, если не невозможным. Есть идеи?

function loadImageTitle(imgsrc, element, width, height, title) {
    var img = new Image();
    $(img)
        .load(function () {
            $(this).hide();
            $(element).replaceWith(this);
        })

        .css({ 'max-width': width, 'max-height': height })
        .attr("title", title)
        .attr("alt", title)
        .attr("src", imgsrc);
}

На самом деле я был не совсем уверен насчет самой основной части этого. Проблема в том, что JavaScript делает img без косой черты (в Safari 5.0.5, в FF 4.0.1, в IE8 и в Chrome 13 - так везде, как я могу сказать), как и в HTML5, необязательно. Safari не соглашается и завершает работу сценария.

1 Ответ

0 голосов
/ 12 августа 2011

Непонятно, чего пытается достичь ваш код.Похоже, вы пытаетесь заменить существующий элемент на изображение.Вы можете сделать что-то вроде этого:

var img = $("<img/>")
  .load(function() { $(element).replaceWith(this); })
  .attr({
     title: title,
     alt: title,
     src: imgsrc
  })
  .css({
    "max-width": width,
    "max-height": height
  }) 

Я собирался использовать .hide (), чтобы скрыть изображение, но оно должно быть в порядке как есть.Поскольку изображение не было добавлено в документ, оно все равно не будет видно.

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