好吧,html4 框架是 "obsolete",但如果 re-writing 您的站点完全没有,看起来没有办法替换。或者有吗?

OK, html4 frames are "obsolete", but there does not look to be a way to replacement without re-writing your site completely. Or is there?

查看 my NUFOSMATIC site 以查看来自国家 UFO 报告中心的 UFO 目击事件。我在大约 17 年前(我太老了)在 ISP 提供的网络服务器上使用 simple-minded 方法将其放在一起,该方法只能提供 HTML、Java脚本和 Java 小程序。它为我完成了工作。

几年前(好吧,6 年前)Oracle 把 Java 搞得一团糟,我(和其他人一样)被烧死了。我花了一点时间将网站的功能从 Java 小程序和我的原始地图从公开可用的数据迁移到 OpenLayers 和 OpenStreetMap。非常痛苦。从中得到了一些新东西,但我也失去了一些东西。

我最近一直在将地图升级到 OpenLayers 6。我最初的实现是 OpenLayers 2,他们设法用 OpenLayers 3 完全 re-write API,我终于抽出时间来把我的头缠在上面,然后开始工作。四天从ol2迁移到ol6!我实际上找回了 Java 小程序的一些功能。

因此,在我部署之前,我正在寻找其他我可能会......现代化......在代码中的东西。我现在发现 frameset/frame 是“过时的”——我还发现 HTML5 中没有任何东西像 frameset/frame.

请注意,我浏览过的大多数网站都说“过时”而不是“弃用”- 这听起来像是会消失的东西 只要他们认为没有人在看...

基本上,我有四个框架:“角”、“header”、“菜单栏”和“主”。当您从一个站点功能移动到另一个站点功能时,通过“菜单栏”进行管理,“主”框架中的 HTML 将被替换。单个页面提供了一个地方来保存一些 session-global 值(比如你正在查看的年份和月份)。

<frameset rows="80,*" frameborder="no" border="0" framespacing="0">
  <frameset cols="100,*" frameborder="no" border="0" framespacing="0">
    <frame name="cornerFrame" src="../html/cornerFrame.html" scrolling=no frameborder=0>
    <frame name="headerFrame" src="../html/headerFrame.html" scrolling=no frameborder=0>
  </frameset>
  <frameset cols="100,*" frameborder="no" border="0" framespacing="0">
    <frame name="menubarFrame" src="../html/menubarFrame.html" scrolling=no frameborder=0>
    <frame name="mainFrame" src="../html/mainFrame.html" scrolling=yes frameborder=0>
  </frameset>
</frameset>

这使我能够模块化我的 HTML(叹息、序列、热图和各种信息页面),其中更改一个不会搞砸所有其他页面。

我发现许多网站 half-solutions,不完整的解决方案,non-functional“解决方案”。我正在寻找一个可靠的例子。

提供的替代 frameset/frame 的解决方案似乎很难跟上进度。

iframe 标记看起来不像 frameset/frame,尤其是我在这里使用的那种嵌套。

使用 CSS 和 div 标签来模拟帧的建议是 non-starter 因为所有代码都必须在一个文件中,这是不可能的。

有人建议 server-side 解决方案是使用 PHP 即时制作页面的选择。好的,我已经专业地使用了十几种语言(甚至尝试在飞行模拟器上使用 Jovial 代码进行移植),但是学习一门新语言只是为了替换一些有用的东西似乎是在浪费我这几年的时间离开了。

或者只是 re-write 该死的网站,我已经做过两次了。只有 10K 行代码?它能有多难?除了需要时间,而且我老了...老...

而且我必须修复 cookie 协议问题,这样我就不会和我在法国的朋友说荷兰语了...

好的,这次我真的很接近了 - mainFrame 在底部被截断了,但是行为真的很好。 cols=100,* 和 rows=100,* 并没有真正的等价物。我确定有一个 CSS 修复了一些东西可以进一步...感谢 How to make width and height of iframe same as its parent div? 强制 iframe 自行运行的方法。

<style>
div {
    background-color: black;
    color: yellow;
    border: 1px solid blue;
    margin: 8px;
}
#top {
    height: 100px;
}
#bottom {
    height: 100%;
    clear: left;
}
#corner, #header {
    height: 100%;
}
#corner, #menu {
    width: 100px;
}
#corner {
    float: left;
}
#menu {
    float: left;
}
#header {
    width: 100%;
}
#menu, #main {
    height: 100%;
}
#wmain {
    height: 100%;
}
iframe {
    position: absolute;
    top: 0px;
    width: 100%;
    height: 100vh;
}
</style>
<body>
<div id="top">
  <div id="corner">
    <div id="wcorner" style="position:relative">
      <iframe frameborder="0" src="../html/cornerFrame.html" scrolling="no"></iframe>
    </div>
  </div>
  <div id="header">
    <div id="wheader" style="position:relative">
      <iframe frameborder="0" src="../html/headerFrame.html" scrolling="no"></iframe>
    </div>
  </div>
</div>
<div id="bottom">
  <div id="menu">
    <div id="wmenu" style="position:relative">
      <iframe frameborder="0" src="../html/menubarFrame.html" scrolling="no"></iframe>
    </div>
  </div>
  <div id="main">
    <div id="wmain" style="position:relative">
      <iframe id="mainiframe" frameborder="0" src="../html/mainFrame.html" 
         scrolling="yes"></iframe>
    </div>
  </div>
</div>
</body>

我们制作了从 frameset/frame 到 iframe/div 的映射原型。看起来不错。这些页面中的许多参考资料都指向我们获得帮助的地方。我们现在已将这些更改加入网站,现在 frameset/frame 免费!

http://nufosmatic.com/nufosmatic_prototype/iframe_div/

** 我们今天早上将其发布到网站上时感到很惊讶,但我们也会解决这个问题。原来是一个应该是“margin-left”的“margin”。