【问题标题】:iframe Back with javascript - avoid main page go backiframe Back with javascript - 避免主页返回
【发布时间】:2012-07-22 17:17:27
【问题描述】:

我正在使用iframe,并且我有一个运行此 javascript 代码的后退按钮(当用户单击后退按钮时):

document.getElementById("myframe").contentWindow.history.go(-1); // back

这很好,但是如果框架中没有上一页,主页面将返回。

如何避免这种情况?我只希望 iframe 返回,如果没有上一页,则什么都不做。

编辑:This 是我的代码。 (@jsfiddle)

【问题讨论】:

  • 也许检查 iframe 'location.href' 属性?如果是默认值 - 什么也不做。
  • @sleepwalker 我还没有测试过,它似乎工作正常。但是……没有更好的办法吗??
  • 我没有使用完整的地址。 (我正在使用../myfolder/a.html),甚至检查iframe.src 也没有用。
  • 检查location.href是什么意思?? location.href 是什么?
  • document.getElementById('myframe').contentWindow.location.href 只有在同一个域中才会起作用。

标签: javascript html iframe


【解决方案1】:

跟踪这样的变化:

<script>
    window.iFrameChanges = -1; //will get incremented to 0 on first page load
</script>

<iframe onLoad="window.iFrameChanges+=1;" src="..."></iframe>

并且历史记录上的window.iFrameChanges值的递减返回

这样你就可以知道历史的“长度”

【讨论】:

  • 这可能不起作用,如果用户在页面未完全加载时单击后退按钮...有什么想法吗?
  • 引入window.iFrameChanges的代码应该在你添加的后退按钮的上方。如果是,那么它将始终在用户有机会使用您的后退按钮之前运行。我能看到这种情况发生的唯一方法是,如果引入变量的脚本位于后退按钮下方。还要确保您对后退按钮的 javascript 调用不是内联的。使用一种方法。 &lt;button onclick="goBack()"&gt;Back&lt;/button&gt; 和脚本 function goBack() { if (window.iFrameChanges &gt; 0) { document.getElementById("myframe").contentWindow.history.go(-1); } }
  • 问题是,你在onLoad上增加了iFrameChanges,意思是新页面完全加载后增加。但是如果新页面正在加载,但仍未完成,并且用户单击返回按钮,则iFrameChanges 不会增加...
  • 如果我尝试访问框架的history 属性时出现错误:stackoverflow.com/questions/25098021/… 对此有什么解决方案吗?我的意思是可能有一些解决方法可以告诉 iframe 在不访问 history 的情况下来回切换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
相关资源
最近更新 更多