3

我们有一个网站,其中一个页面包含一个框架集(我们需要从另一个网站获取数据)。问题是,一旦您到达包含框架集的页面,即使您单击其他链接,URL 也不会再改变。它继续显示带有框架集的页面链接。例如,带有框架集的页面的 URL 是:

http://www.ourwebsite.com/profile.php

通常,当您单击网站上的其他链接时,它将更改为该页面具有的任何 URL/页面名称。但是在这里,一旦您进入框架集页面,该 URL 会以某种方式被屏蔽,无论您在该站点中的任何位置都只显示http://www.ourwebsite.com/profile.php 。

有没有办法解决这个问题?

4

2 回答 2

1

<a href="foo" target="_top">

于 2011-01-21T06:25:31.380 回答
1

编辑:

如果您想显示来自另一个站点的框架,并且您可以控制该其他站点如何发出其 HTML,请按照下面我的原始答案中的说明获取框架以发出超链接target="_top"

但是,如果您正在构建一个您无法控制的网站,那么使用框架可能不起作用。相反,您需要使用另一种方法来获取数据。例如,您的服务器应用程序可以使用file_get_contents()或其他 PHP HTTP 客户端库从远程站点获取数据,然后在您自己的站点内发出数据(不带任何帧)。当然,如果您不拥有远程站点,则需要确保您可以以这种方式重新使用他们的数据。

旧答案(如果您控制框架内的站点,请使用此答案:

解决这个问题的典型方法是将所有框架中的 URL 指向一个新的框架集 URL,target="_top"在超链接上,通常包含查询字符串参数以告诉框架集页面要加载哪些框架。

例如,假设/frameset.php有两个框架最初指向/frame1.php和的框架集/frame2.php。frame1 内的链接应如下所示:

<a href="/frameset.php?frame1=link_url&frame2=frame2_current_url" target="_top">

link_url您要加载到该框架中的内容页面在哪里,并且frame2_current_url是当前加载到 frame2 中的 url(因为您不希望在重新加载页面时更改它)。

然后,您需要更改父框架集的代码以查找这些查询字符串参数并相应地设置每个框架的 URL,如果未提供查询字符串参数,则使用每个框架的默认 URL。确保对您在查询字符串参数中填充的所有 URL 进行 URL 编码。

请注意,您只想对指向您自己网站上的链接的链接执行此魔法。对于指向外部站点的链接,您根本不应该重写 URL,因此您最终会得到以下超链接:

<a href="http://www.externalsite.com/" target="_top">

警告:这种方法实际上只适用于您对生成的所有 URL 有非常严格控制的网站。真正的网站往往有较松的控制,特别是如果您有非开发人员贡献内容或者您通过客户端脚本进行一些导航。

于 2011-01-21T06:27:19.150 回答