如何更改“父”框架的 URL?
Posted
技术标签:
【中文标题】如何更改“父”框架的 URL?【英文标题】:How do I change the URL of the "parent" frame? 【发布时间】:2011-05-20 16:12:31 【问题描述】:我有一个我自己托管的网站。我没有静态 IP 地址,因此我的域的所有流量都通过掩码转发到我的 DDNS 帐户。生成的页面如下所示...
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>mydomianname.com</title>
</head>
<frameset rows="100%,*" border="0">
<frame src="http://myddns.dyndns.org/mydomainname" frameborder="0" />
<frame frameborder="0" noresize />
</frameset>
</html>
当用户在“子”框架内导航时,如何更新“父”框架的 URL?
更新:成功了吗?
我曾尝试使用 javascript 执行此操作,但在获取正确的 href
到我的 javascript 函数时遇到问题,而不会产生不利的副作用(打开两个窗口,让我的主窗口转到错误的位置,或者让它所以后退按钮无法正常工作)。我所需要的只是我的a
标签的一个属性来保存一个我可以在我的javascript 中使用的值,但根本不会做任何其他事情。添加属性value
事件虽然它不是a
标记的本机属性,但效果很好。
a
标签...
<a onclick="url_update(this);" value="test/test.html" href="javascript:void(0);">test link</a>
还有 javascript 函数...
function url_update(element)
base_url = 'http://mydomain.com/';
window.parent.location.href = base_url + element.getAttribute('value');
生成的更新后的 URL 是...
http://mydomain.com/test/test.html
...并且没有前面提到的副作用。
我想修复的唯一“副作用”是在浏览器窗口底部的信息栏中显示链接。现在它显示javascript:void(0);
,因为这就是写在我的href
属性中,但我希望它在链接悬停时显示更新的 URL...有什么想法吗?
如果我可以废弃所有这些 javascript 并改用 IIS 7 URL Rewrite 2.0 来做这件事会更好……但我还没有掌握 URL 重写的黑魔法。
【问题讨论】:
可能是一个简单的window.open("the-new-url-goes-here", "_top")
。如果您使用的是链接,那么 <a href="some-url-goes-here" target="_top">Open me</a>
.
【参考方案1】:
javascript:
window.top.location = 'anther url'
--更新您更新的问题
使用element.getAttribute('value')
而不是element.value
--更新#2
使用 href 属性,但是,在 onclick 函数中添加一个return false;
:
<a onclick="url_update(this);return false;" value="test/test.html" href="test/test.html">test link</a>
一旦你这样做了,你也可以跳过 value 属性而只使用 href 属性,更新你的 url_update 函数以使用 element.href
而不是 element.value
【讨论】:
您的答案看起来可能有效,但我需要为我网站上的每个链接执行此操作。如果我有类似 测试链接 之类的东西,那么我如何将/test/test.html
传递给单个 javascript 函数,该函数将更新调用该函数的每个链接?跨度>
太棒了,我不知道你可以添加标签本身没有的属性!现在我可以使用 value 而不是滥用 rel
和/或 rev
属性。您是否还知道当我将鼠标悬停在链接上时,如何使更新后的 URL 正确显示在浏览器窗口底部的信息栏中? (见更新的问题)。【参考方案2】:
很难从您的问题中准确判断哪些框架在做什么,但如果 Scrum Meister 的解决方案适合您,那么您可以通过将其添加到每个 A 标记来轻松实现您想要的。
target="_top"
您的示例已修改。
<a href="test/test.html" target="_top">test link</a>
你也可以用 jquery 来做到这一点... 在所有A标签都应该有target="_top"的页面上,您可以在页面上实现以下jquery代码,它将动态地将目标添加到所有链接。
<script language="javascript" type="text/javascript">
$(function()
$("A").attr("target","_top");
);
</script>
假设你有带有 href 属性的normail A标签,你可以一起摆脱onclick,目标解决方案不需要其他javascript。
【讨论】:
我同意你的观点,很难从我的问题中看出发生了什么,但是当我提供所有细节时,我的问题没有得到回答,因为人们不喜欢阅读long :) 我尝试像你说的那样使用目标标签,但无法让它在我的设置中正常工作,但它确实让我想到尝试一些其他属性,只是为了将值传递给我的 javascript 函数。我使用rel
只是为了保持价值,而且效果很好。我知道这不是 rel
属性的用途,但它有效。请参阅我更新的问题。
Target = "_top"
是迄今为止最简单的方法!谢谢!【参考方案3】:
首先,您需要在同一个域中...否则出于安全原因,您无法更改它。 在您的子框架中声明并调用此函数
function change(theUrl)
window.parent.reloadContent(theUrl);
在你的父母有以下功能:
function reloadContent(theUrl)
if (theUrl != "")
document.getElementById("frameID").src= theUrl ;
【讨论】:
以上是关于如何更改“父”框架的 URL?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Wordpress 中创建框架以便在不更改 URL 的情况下将文章加载到首页?