html - 框架集导致 URL 在浏览页面时不会更改。有办法解决这个问题吗?

标签 html url hyperlink frameset masking

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

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

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

有办法解决这个问题吗?

最佳答案

编辑:

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

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

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

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

例如,假设 framset /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 的网站。真正的网站往往具有更宽松的控制,尤其是当您有非开发人员贡献内容或您通过客户端脚本进行一些导航时。

关于html - 框架集导致 URL 在浏览页面时不会更改。有办法解决这个问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755001/

相关文章:

javascript - HTML 表格中的值小计

java - Spring @PathVariable 没有结束斜杠(带 IP 地址的字符串)

vba - Excel VBA - 设置超链接显示文本

javascript - 单击按钮时将链接 href/文本更改为文本框的值?

HTML 图像链接在 iOS 上不起作用

python - 使用 Python 将 HTML 转换为 PDF

html - Top & Left vs margin-top 和 margin-left

java - 解析字符串以获取内容

iPhone - 我如何知道 URL 是否是资源文件?

python - Django 2.0动态生成urlpatterns