使用Safari尝试这行代码时:main时它给出undefined但是当我移除框架集时它会正常工作
使用IE我完全没有问题
你能告诉我吗?
<form id="main" name="main">
<body bgcolor="#FFFFFF">
<input type='hidden' name='LANGUAGE' value='<%= pageLanguage %>'>
<input type='hidden' name='userType' value='<%= user.getType() %>'>
</body>
<frameset cols="20, *" frameborder=0 >
<frame src="include/blankpage.html" frameborder=0 scrolling="no" marginheight=0 marginwidth=0 noresize>
<frame src="documents/ListConfidentialDocuments.jsp" name="frmList" id="frmList" frameborder=0 marginheight=0 marginwidth=0 noresize >
</frameset>
</form>
th
你的代码看起来有点乱。
首先,您要么使用框架集,要么不使用。你不能同时拥有框架集和正文内容,你需要决定使用哪一个。
话虽如此,你已经得到的形式(如果你决定使用一个框架集)将进入其中一个框架。
我认为你可能需要花一点时间学习HTML。一个文档应该只包含一个body
标记集,页面上显示的所有内容都需要在其中,包括表单。
我个人会考虑重写这一点,把你的形式在主体内,并考虑使用iframe(如果你必须使用框架)。
<body>
<form [...]>
<input type='hidden' name='LANGUAGE' value='<%= pageLanguage %>'>
<input type='hidden' name='userType' value='<%= user.getType() %>'>
</form>
<iframe src="include/blankpage.html" [...]>
<iframe src="documents/ListConfidentialDocuments.jsp" [...]>
</body>
我认为你遇到问题的主要原因是你的HTML是一个烂摊子。浏览器通常都能很好地理解你的意思,但是在这种情况下,我认为Safari就是做不到。
由于具有name=main
的元素是<form>
,因此document.forms.main
应该工作。因为您还包含了id
,所以调用document.getElementById('main')
也可以。
然而,你的标记是错误的和不合逻辑的。为什么你要把<form>
包含到一个永远不会被看到的文档中,因为帧是存在的?你根本就不应该使用框架;如果有必要,请学习HTML的基础知识。对于不支持框架的浏览器,带有框架集+回退的HTML文档的DOM树应该如下所示:
html
|__head
| |__title
|__frameset
|__frame
|__frame
|__noframes
|__body //this is fallback content
|__form (or anything else)
正如@Jamie所提到的,您可能希望使用iframes
给出的标记不是有效的HTML。在W3C验证器上验证您的标记。你会知道问题所在。修复那些&所有东西都可以跨浏览器工作。
最后,你可能想开始使用CSS