我真的希望这不是一个愚蠢的问题,但这个HTML似乎太简单而不能失败。它仍然失败了。
我有一个以表单开头的页面,在表单之后,我还有一些元素。这些元素永远不会显示!这是代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>CGI Test</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/cgi-bin/upload.cgi" target="upload_target">
<input type="hidden" name="cmd" value="uploadBackgroundFile" />
<p>File Upload:
<input type="file" name="file" value="" /> (Select A Local File)</p>
<p><input type="submit" name="cgitest" value="Submit Request" /></p>
<iframe id="upload_target" name="upload_target" src=""
style="visibility: hidden; width: 500px; height: 300px; border: 2px solid black;" />
</form>
<p />
<hr />
<h1>List of uploaded files:</h1>
<ul id="listBackgroundFiles">
<li>(Nothing loaded yet)</li>
</ul>
</body>
</html>
此外,如果我调用“document.getElementById('listBackgroundFiles')”,它将返回null。表单之后的元素不仅没有显示,它们似乎根本不存在!
这似乎不是浏览器问题...我在Internet Explorer 7.0.6002.18005,Firefox 3.6.12,Chrome 5.0.375.99,Opera 10.60.3445和Safari 5.0.2(7533.18)中遇到同样的问题.5),所有在Windows Vista下运行(遗憾)。我通过W3C和WDG验证器运行页面,这些没有显示任何问题。最后,如果我将这些元素移到表单上方,它们就会很好地显示出来。将元素放在表单后面似乎是一个问题。
再次,如果这是一个愚蠢的问题我会道歉,但我对这种简单的事情如此失败感到困惑。
答案 0 :(得分:2)
更改
<iframe id="upload_target" name="upload_target" src=""
style="visibility: hidden; width: 500px; height: 300px; border: 2px solid black;" />
到
<iframe id="upload_target" name="upload_target" src=""
style="visibility: hidden; width: 500px; height: 300px; border: 2px solid black;" ></iframe>
据我所知,<iframes>
和<scripts>
应始终通过编写另一个结束标记而不是单个标记来关闭。
点击此链接查看HTML标记列表,只有在此列表中自行关闭的标记才可以并且应该自行关闭:List of HTML Tags
虽然根据我的经验,脚本和iframe标签是最危险的标签。
答案 1 :(得分:1)
iframe不是自动关闭的。试试这样,它会起作用。
<iframe id="upload_target" name="upload_target" src=""
style="visibility: hidden; width: 500px; height: 300px; border: 2px solid black;"></iframe>
答案 2 :(得分:0)
即使您的代码有效,自动关闭iframe也是问题所在。将<iframe />
更改为<iframe> </iframe>
。就像脚本标记其中的一个“事物”......