safari浏览器中的图片已损坏



我使用这样的ASP.net图像标记。

<asp:Image ID="Image6" runat="server" ImageUrl='<%#Eval("DeviceStatusFlag")%>' alt=''/>

现在,当ImageURL为空时,通常会在一些浏览器(如Firefox)中显示损坏的图像,但在使用ält=''后,这些浏览器不会显示任何图像,这是可以的。但在Safari浏览器中,我仍然看到一个?当ImageURL为空时标记图像图标。

也尝试使用这个,

 <asp:Image ID="Image6" runat="server" ImageUrl='<%#Eval("DeviceStatusFlag")%>' AlternateText = '' GenerateEmptyAlternateText='true' />

但它在Safari上不起作用。

如何为Safari修复此问题?

首先,我怀疑这是一个asp:image问题,如果用标准的HTML img标记替换它,我可以想象它也会这样做。

很明显,safari希望以这种方式将src属性呈现为空。如果它是空的,您可以使用JavaScript来隐藏它,或者添加一个透明的图像而不是什么都不添加。

就我个人而言,我不认为有一个空的图像src是一个好的做法。

您还可以使用一个div,带有一个背景图像src,将none作为一个设置进行处理。

编辑:alt标记是关闭图像或辅助功能的替代文本。虽然这可能会改变某些浏览器的行为,但这并不是它的意图。

编辑2。

隐藏你的asp.net服务器控件。

<asp:Image ID="Image6" runat="server" visible="False" ImageUrl='<%#Eval("DeviceStatusFlag")%>' alt=''/>

在服务器端更改ImageUrlVisible可能更容易。

<asp:Image ID="Image6" runat="server">

例如:

Image6.Visible = False
Image6.ImageUrl = DeviceStatusFlag

获取正在渲染的<img标记的实际渲染url。

使用

Image6.ClientID

您可以很容易地将其嵌入HTML中,如下所示:

<script>
function setImageVisibility() {
  var imageID = "<%=Image6.ClientID%>",
      imageElement = document.getElementById(imageID);
  if(imageElement) {
     if(imageElement.src === "") {
           imageElement.style.visibility = "hidden";
     }
  }
}
setImageVisibility();
</script>

最新更新