当有frameset元素时,Safari不知道文档中的From元素



使用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

最新更新