如何更改“父级”的 URL框架?
我有一个自己托管的网站。我没有静态 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 执行此操作,但在为我的 javascript 函数获取正确的 href
时遇到问题,并且不会产生不利的副作用(打开两个窗口,让我的主窗口转到错误的位置,或者使其后退按钮无法正常工作)。我所需要的只是 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 重写的黑魔法。
I have a website which I host myself. I do not have a static IP address so I have all traffic for my domain forwarded with masking to my DDNS account. The resulting page looks like this...
<!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>
How can I update the URL of the "parent" frame as users navigate within the "child" frame?
UPDATE: Success?
I have tried doing this with javascript but had an issue getting the correct href
to my javascript function with out having adverse side effects (having two windows open up, having my main window go to the wrong location, or making it so the back button didn't work right). All I needed was an attribute of my a
tag to hold a value that I could use in my javascript, but would do nothing else at all. Adding the attributed value
event though it is not a native attribute to the a
tag works great.
The a
tag...
<a onclick="url_update(this);" value="test/test.html" href="javascript:void(0);">test link</a>
and the javascript function...
function url_update(element){
base_url = 'http://mydomain.com/';
window.parent.location.href = base_url + element.getAttribute('value');
}
the resulting updated URL is...
http://mydomain.com/test/test.html
... and there are none of the previously mentioned side effects.
The only "side effect" that I would like to fix is display of the link in the info bar at the bottom of a browser window. Right now it says javascript:void(0);
because that is what is written in my href
attribute, but I would like it to show the updated URL when the link is hovered over... any thoughts?
It would be even better if I could scrap all of this javascript and use IIS 7 URL Rewrite 2.0 to do this instead... but I have yet to master the black art of URL rewriting.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
javascript:
--更新您更新的问题
使用
element.getAttribute('value')
而不是element.value
--UPDATE #2
但是,请使用 href 属性,将
return false;
添加到 onclick 函数:一旦执行此操作,您也可以跳过 value 属性并仅使用 href 属性,更新您的 url_update 函数以使用
element.href
而不是element.value
javascript:
--UPDATE to your updated question
use
element.getAttribute('value')
instead ofelement.value
--UPDATE #2
Use the href attribute, however, add a
return false;
to the onclick function:Once you are doing that, you might aswell skip the value attribute and just use the href property, update your url_update function to use
element.href
instead ofelement.value
很难从你的问题中准确判断哪些框架在做什么,但如果 Scrum Meister 的解决方案适合你,那么你可以通过将其添加到每个 A 标签来轻松实现你想要的功能。
你的例子修改了。
你也可以用 jquery 来做到这一点......
在所有A标签都应该有target =“_top”的页面上,您可以在页面上实现以下jquery代码,它将动态地将目标添加到所有链接。
假设您有带有 href 属性的normail A 标记,您可以一起摆脱 onclick,目标解决方案不需要其他 javascript。
It's hard to tell from your question exactly which frames are doing what, but if The Scrum Meister's solution works for you, than you can easily implement what you want by adding this to each of your A tags.
Your example modified.
You could also do this with jquery...
On the page where all A tags should have target="_top" you can implement the following jquery code on the page and it will dynamically add the target to all links.
That is assuming that you have normail A tags with the href attribute, you can get rid of the onclick all together, no other javascript is required with the target solution.
首先,您需要位于同一个域中...否则出于安全原因您无法更改它。
在您的子框架中声明并调用此函数
在您的父框架中有以下函数:
First you need to be on the same domain... otherwise for security reasons you can not change it.
Declare and call this function in your child frame
In your parent have the following function :