【发布时间】:2021-09-08 19:45:32
【问题描述】:
我了解到<frameset> 标记自 HTML5 起已弃用。值得庆幸的是,Chrome 仍然支持渲染它,不幸的是,它是目前我发现的唯一适合我的用例的东西。
<frameset> 标记的重要元素是其他类似框架的对象所缺少的可拖动边框,即使有大量的 javascript 帮助,我也无法使用 iframe .
在我的例子中,另一个重要的事情是其中一个框架包含一个按钮/链接,导致另一个框架消失或重新出现。发生这种情况时,框架应适当调整大小以填充空间。
我当前的 HTML 类似于以下 MCVE:
index.html
<html>
<head>
<script language="javascript">
function toggleBottomFrame() {
var bottomFrame = document.getElementById("bottomFrame");
var horizFrameset = document.getElementById("horizFrameset");
if (bottomFrame.style.display == "none") {
bottomFrame.style.display = "";
horizFrameset.rows = "*,25%";
} else {
bottomFrame.style.display = "none";
horizFrameset.rows = "*,0px";
}
}
document.toggleBottomFrame = toggleBottomFrame;
</script>
</head>
<frameset id="horizFrameset" rows="*,0px">
<frameset id="vertFrameset" cols="300px,*">
<frame id="topLeftFrame" src="buttonpage.html"></frame>
<frame id="topRightFrame"></frame>
</frameset>
<frame id="bottomFrame" style="display:none"></frame>
</frameset>
</html>
buttonpage.html
<html>
<head></head>
<body>
<button onclick="parent.frameElement.ownerDocument.toggleBottomFrame();">
</body>
</html>
这在最初为其编写代码(并且需要继续支持)的 IE11 以及 Chrome 中都有效。
如何使用未弃用的功能实现完全相同的功能(包括,最重要的是,使用鼠标在框架的边框周围拖动以扩大或缩小其中一个框架的能力)?
如果可能,我想要一个标准客户端 JS 或 HTML 的解决方案,而不需要导入其他库,如 resize.js。这是为了一个非常轻量级的前端,我不想用我不需要的库来膨胀它。
【问题讨论】:
-
请原谅这里的无知,但是“MVCE”是什么意思呢?我在搜索时得到“模型视图控制器”。在这种情况下,它只是意味着“模型视图控制器示例”吗?
-
@AnthonyLoPrimo 我一直把 MCVE 拼错为 MVCE,抱歉
-
其实我都不知道它拼错了!哈。我感谢你澄清。我希望我能提供一个答案作为回报,但恐怕我无法提供太多帮助。不过,答案看起来很棒,希望对您有所帮助!
标签: javascript html iframe frameset