Safari不支持HTML5的void元素;JavaScript



我使用JavaScript生成图像对象,然后使用jQuery更改其属性,包括.load函数。在尝试寻找Safari(5.0.5版本)的错误控制台后(最令人沮丧的是,最终发现它并不难找到),我们发现Safari在遇到未关闭的img标签时终止其JavaScript,这在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不同意并终止该脚本。

不清楚您的代码试图实现什么。看起来您正在尝试用图像替换现有元素。你可以这样做:

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

我打算使用。hide()来隐藏图像,但它应该是好的。因为图像还没有添加到文档中,所以无论如何它都是不可见的。

最新更新