我有一个主要由DOM脚本创建的页面,它会从几个网络摄像头生成一个图像表(普通的img元素)(帮助朋友登上宠物,我的HTML / DOM有点生锈)。 / p>
它在FF3或Chrome中工作正常,但在IE7中没有。事实上,整个表在IE中不可见(但应用了正文背景颜色)。
查看IE中的页面,没有脚本错误,CSS似乎应用正常,DOM似乎显示表中的所有单元格和行,这些都是生成的。
使用IE Developer工具栏,运行图像报告甚至可以显示图像(即使它们没有出现在表格中,并且没有证据表明页面中的表格已经呈现 - 即使单元格中的文本也不是'' t渲染)
在查看img元素并使用跟踪样式功能时,我一次看到img元素都显示为:none,并且它表示内联样式,但我的代码或样式表中没有任何内容可以执行此操作。当我开始为样式表中的每个表元素添加显式条目时,这个问题似乎已经消失。
从哪里开始?
body { background-color : gray ; color : white ; margin : 0 ; font-family : Verdana, "lucida console", arial, sans-serif ; }
#CameraPreviewParent { text-align : center ; width : 100% ; }
#CameraTable { text-align : center ; width : 100% ; }
#CameraLiveParent { text-align : center ; margin : 50px ; }
#CameraLiveHeading { color : white ; }
td.CameraCell { text-align : center ; }
img.CameraImage { border : none ; }
a:link, a:visited, a:active, a:hover { text-decoration : none ; color : inherit ; }
table#CameraTable { color : white ; background-color : gray ; }
td.CameraCell { color : white ; background-color : gray ; }
完全删除样式表无效。
以下是生成页面的代码(我为DOM工具栏中的格式化道歉 - 我尝试放入一些换行符以便于阅读):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN"><META http-equiv="Content-Type" content="text/html; charset=windows-1252">
<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT src="cameras.js" type="text/javascript"> </SCRIPT>
<SCRIPT type="text/javascript">
function CallOnLoad() {
document.title = PreviewPageTitle ; BuildPreview(document.getElementById("CameraPreviewParent")) ;
}
</SCRIPT>
</HEAD>
<BODY>
<!-- Any HTML can go here to modify page content/layout -->
<DIV id="CameraPreviewParent">
<TABLE id="CameraTable" class="CameraTable">
<TR id="CameraRow0" class="CameraRow">
<TD id="CameraCell0" class="CameraCell"><A id="CameraNameLink0" href="http://192.168.4.3:801" class="CameraNameLink">Luxury Suite 1 (1)</A><BR /><A id="CameraLink0" href="camlive.html?camIndex=0" class="CameraLink"><IMG id="CameraImage0" title="Click For Live Video from Luxury Suite 1 (1)" height="0" alt="Click For Live Video from Luxury Suite 1 (1)" src="http://192.168.4.3:801/IMAGE.JPG" width="0" class="CameraImage" /></A></TD>
<TD id="CameraCell1" class="CameraCell"><A id="CameraNameLink1" href="http://192.168.4.3:802" class="CameraNameLink">Luxury Suite 2 (2)</A><BR /><A id="CameraLink1" href="camlive.html?camIndex=1" class="CameraLink"><IMG id="CameraImage1" title="Click For Live Video from Luxury Suite 2 (2)" height="0" alt="Click For Live Video from Luxury Suite 2 (2)" src="http://192.168.4.3:802/IMAGE.JPG" width="0" class="CameraImage" /></A></TD>
</TR>
</TABLE>
</DIV><!-- This element is used to hold the preview -->
<!-- Any HTML can go here to modify page content/layout -->
</BODY>
</HTML>
显然,插入图像宽度和高度的DOM代码在IE中无法正常工作:
var PhotoWidth = 320 ;
var PhotoHeight = 240 ;
var image = document.createElement("img") ;
image.setAttribute("id", "CameraImage" + camIndex) ;
image.setAttribute("class", "CameraImage") ;
image.setAttribute("src", thisCam.ImageURL()) ;
image.setAttribute("width", PhotoWidth) ;
image.setAttribute("height", PhotoHeight) ;
image.setAttribute("alt", thisCam.PreviewAction()) ;
image.setAttribute("title", thisCam.PreviewAction()) ;
link.appendChild(image) ;
动态构建表时有关require TBODY元素的响应似乎是整个问题 - 这甚至可以在DOM中将图像宽度和高度设置为0!
答案 0 :(得分:3)
我发现,在IE中,如果使用document.createElement()
动态创建表格,则需要table(tbody(tr(tds)))
。没有tbody
,表格将不会显示。
答案 1 :(得分:1)
<script>
标签被<script src="..." />
标记用作</script>
而不是开头,然后是关闭{{1}}标记时,它是错误处理的。我似乎遇到了很多因为我倾向于使用XSLT来生成HTML输出。
但是,第一步是在某处发布一个无法正常显示的页面示例。它不必包含任何真实数据,只是足以显示问题。没有一个有效的例子,没有人能够猜出问题是什么。
答案 2 :(得分:0)
您是否已经开始将CSS重置为公共基础?请查看CSS Reset或YUI Reset CSS。 (但是如果没有要查看的示例页面,我们将猜测实际问题是什么。)
答案 3 :(得分:0)
Explorer Exposed! on positioniseverything.net列出了仅在IE中找到的错误。