我使用这样的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=''/>
在服务器端更改ImageUrl
和Visible
可能更容易。
<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>