【问题标题】:Dealing with frames - fixed content of a website处理框架 - 网站的固定内容
【发布时间】:2013-08-05 11:46:20
【问题描述】:

我正在开发我的网站,主页 (index.html) 由两个框架组成:page1.html 和 page2.html。这是代码:

<!DOCTYPE html>
<head>  
<frameset rows="16%,84%" framespacing="0" border="0" frameborder="0">
  <frame name="page1" target="page2" src="page1.html" scrolling="auto">
  <frame name="page2" src="page2.html" target="_self" scrolling="auto">
<noframes></noframes>
</head>
</html>
  • 第一个作为页面的固定内容,包含 到网站其余部分的多个链接。绝对重要 确保此页面时刻保持打开状态。

  • 第二个是“body”,即内容区域,当有任何内容时都会被替换 的链接被点击。

所以这是我的问题:如果不是从 index.html 访问任何页面,例如 google,page1.html 将不存在,因为它仅通过 index.html 打开,并且该站点将丢失它的主要链接。

我正在寻找一个代码来检查页面“page1.html”是否存在,如果不存在,则将其作为框架打开。

我得到的最接近的是这个 javascript 代码:

<script language="javascript">
window.onload=function(){
    if(self==parent)
        window.location.href = "index.htm"
}
</script>

如果不是从 index.html 进入页面,它会将任何进入页面的用户重定向到该页面。但这仍然不好。有什么线索吗?

【问题讨论】:

  • 不要使用框架集。它们已经过时了。

标签: javascript frame frameset


【解决方案1】:

当我阅读您的问题时,我首先想到的是阅读 window.frames.length 并采取行动。正是你自己做的。

然而,您几乎可以将framesetframe 视为如今已弃用的技术。相反,将链接放在 HTML5

【解决方案2】:

框架已被弃用,但无论如何:
检查页面是否是这样的父框架:

if(window.top == window.self)

window.top 是父框架,window.self 是当前框架。如果它们相等,则没有父框架(集)。

【讨论】:

  • 不推荐使用框架。甚至没有框架集。事实上,iframe 在现代 mashup 应用程序中越来越受欢迎。只是一个提示,始终尝试在 JavaScript 中使用严格的相等运算符(“===”),尤其是在进行引用相等测试时。通常,您会获得性能提升并增加代码的可读性。
  • 感谢指正。框架实际上已过时 (w3.org/TR/html5-diff/#obsolete-elements)。
  • 如果你问我它们已经过时了 =) 谢谢你的链接!
猜你喜欢
相关资源
最近更新 更多
热门标签