iframe 为啥得不到 referrer

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iframe 为啥得不到 referrer相关的知识,希望对你有一定的参考价值。

A页面 里有个 IFRAME 装着 B页面

这时我在B页面里有个链接 跳转 去到 C页面

在C页面使用 referer ,得到的却是 A页面的URL

但我想要的是IFRAME里 的 B页面。

有办法吗?

没办法~IFRAME只是个容器~怎么跳转都跟它没关系~它也不会做记录,很奇怪你为什么非要用IFRAME呢?可以用别的技术代替的~很少用IFRAME的~追问

有什么其他的方法吗?

追答

比如说ajax啊~你不就是想无刷新跳转嘛~

追问

我是想从a页面进入b页面,从b页面进入c页面,用Ajax,怎么实现啊??

追答

去搜一下JQ的AJAX吧~这个比你那个iframe复杂,但是好用多了~

追问

Ajax 怎么从一个页面进入另一个页面,而且要在js中操作??

参考技术A 应该是你的IFRAME写在A页。

为啥 iframe 这么慢?

【中文标题】为啥 iframe 这么慢?【英文标题】:Why are iframes so slow?为什么 iframe 这么慢? 【发布时间】:2010-11-08 16:32:50 【问题描述】:

我有更长一点的问题要问你 - 但希望答案会很简单:)

假设我有一个非常简单的页面,带有链接和 iframe(仅用于简单示例)。

<body>
    <a href="test.html" target="mframe">open link></a>
    <iframe name="mframe" [params] />
</body>

因此,当您单击链接时,它将在框架中加载 test.html。

现在我将使用 div 和 ajax 调用更改 iframe。

<body>
    <a href="doAjaxCall('test.html')">open link</a>
    <div id="main-content"></div>
</body>

doAjaxCall 将简单地使用 GET ajax requset 来获取整个响应,解析它(使用 JavaScript)并抓取

标记中的内容并将其放入 main-content.innerHTML。

test.html 包含很多 html,还有 css 样式(但与父页面上的样式相同 - 所以我在使用 ajax 解决方案时不需要它们)。

问题:

为什么这个 ajax 解决方案这么快?我仍在下载相同数量的数据(下载整个 test.html)。

为什么 iframe 解决方案这么慢?是因为浏览器必须再次解析所有可能的样式吗?还是 iframe 的其他开销?

【问题讨论】:

您是否在多个浏览器中看到相同的行为? 其实我的例子很简单。 :) 实际上,我正在一个更大的站点上尝试此解决方案,我们现在正在使用 iframe。我已经删除了它们并用那个 ajax 解决方案替换它们。正如我所写,我只是用 ajax 调用替换了链接,但流量仍然相同。是的,在每个浏览器(IE/FF/CH/SAF)中它肯定更快。我现在看到的唯一原因是浏览器不需要一次又一次地加载样式,只需替换“main-content”div 的 innerHTML。谢谢!帕沃尔。 如果您的样式表位于通过链接标签调用的专用 css 文件中,那么浏览器应该利用缓存并且只加载一次。顺便说一句,我很好奇你的 iframe 有多慢 - 我们说的是毫秒,对吧? 【参考方案1】:

您几乎走在正确的轨道上。 iframe 会变慢,因为浏览器会有额外的开销(渲染它,维护它的实例和对它的引用)。

ajax 调用会更快一些,因为您获取数据然后注入它,或者用它做任何您想做的事情。 iframe 需要在浏览器内存中构建一个全新的“页面”,然后将其放入页面中。

【讨论】:

6 年后,这仍然是准确的评估吗? @donohoe 是的,即使 7 年后情况依然如此 再过 3 年,我相信仍然适用。 一年还是一样 ...还有一个【参考方案2】:

Steve Souders 在他的高性能网站博客上发布了 Using Iframes Sparingly 的帖子,可能会提供更多见解。

【讨论】:

【参考方案3】:

尽管自 2009 年以来浏览器有所改进,但事实上浏览器需要访问其他服务器(假设 iframe 用于第三方内容)或再次访问本地服务器(假设 iframe 用于本地内容),这仍然会影响页面性能。一般来说,额外的 HTTP 请求总是会对页面的性能产生影响。如果可以在页面加载后构建 iframe 并渲染 iframe 的内容,这将改善初始页面加载。但是,我认为这会在 iframe 加载其他内容时影响页面性能。

【讨论】:

以上是关于iframe 为啥得不到 referrer的主要内容,如果未能解决你的问题,请参考以下文章

为啥用div弹出的窗口 里边的可输入控件不能输入啊???

为啥 iframe.contentWindow == null?

为啥前端尽量少用iframe

为啥 iframe 这么慢?

为啥 scrollTo() 方法不适用于 iframe?

为啥 iframe 比 body 大? iframe在100vh时添加垂直滚动条[重复]