怎么获取 iframe转跳的网址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么获取 iframe转跳的网址相关的知识,希望对你有一定的参考价值。

有什么办法能获取 iframe内点击连接转跳后的地址??
是用js或者直接用jquery 获取iframe转跳后的地址再显示在网页元素中

如果是同域名的网址,可以通过JS来读取:

var url = window.frames[0].location.href;


如果是跨域的,由于安全原因,你只能获取你原来设置的url:

var url = $('iframe').attr('src');

如果iframe里面的地址跳转了,这个是不会跟着变的,也就是说,你是无法获取变化后的地址的。

追问

那跨域是不是就完全木有办法了?

追答

是的。原则上,浏览器也不应该让这种不安全的操作出现(如果这种操作是允许的,很多网址的用户数据都要被盗取了)。

参考技术A

使用其它的浏览器也有相同或相似的功能。

追问

忘了说。。是用js或者直接用jquery 获取iframe转跳后的地址再显示在网页元素中。。

追答

使用jquery :

html :

Jquery code:
$('#iframe ').attr('属性名') //返回的结果是:属性值

是这个意思吗?

追问

attr只能获取到我页面中原先设置的地址,iframe里面转跳过后就拿不到最新的地址了。。。不知道这个有没有什么办法。

我想要的效果是这样的:我自己做了一个页面,里面iframe包含某个网站登陆页面,原页面登陆之后,网址中有一串登陆后的token码,我想我的页面能在iframe登陆转跳后获取他地址中的token显示在我的页面上

ajax 代替post过去貌似也不能拿到新地址的吧?

追答

只要你的标签还在,就一定可以获取。不过可能你遇到的是其它我不了解的情况。

追问

就是这一段,太长发不出。。iframe里面的页面是一个登陆页面,正常登陆之后地址会改变,但是attr获取的地址是图片中本来就指定的地址而不是登陆后的地址

参考技术B 跨域是不能操纵Iframe的,所以获取不了Iframe中的转跳地址。但是iframe中的子页面可以操纵父页面,用parent就行了。不知道对方准不准你修改它的页面,如果允许,你可以在子页面写个js把地址传到你的页面来。如果不行,还有个死办法,用正则表达式,把你的iframe的所有元素提取出来,找到form标签内部的action地址。追问

跨域。那是别人的登陆页面,登陆后有信息在地址上,action地址没用。。看来是没办法了

参考技术C 如果你能控制iframe的页面,让它的js告诉外面的最好,其他办法是,如果页面不跨域,可以通过本页面js进入iframe的js获得

追问吧!少年追问

我来追问了。。跨域的。我自己的页面调用别人的登陆页面,具体看看我跟另一位大神的问题。。

javascript怎么操作iframe页面里面的dom元素?

a页面中有个:<iframe id="test" name="test" src="iframe.html"></iframe>
iframe.html页面有个 input type="button" value="点击" id="btn">

在a页面中点击iframe页面里面的按钮,然后弹出一个对话框 alert("iframe里面的按钮被成功点击了");
这是我参考写的代码,但是点击按钮根本没弹出,
<script type="text/javascript">
function getIFrameDocument(aID)
var ifr = document.getElementById(aID).contentWindow.document||document.frames[aID].document;
return ifr;

var ifrdoc = getIFrameDocument('test');
var btn=ifrdoc.getElementById('btn');
btn.onclick=function()alert("iframe里面的按钮被成功点击了");
</script>
用firebug调试的时候如下错误提示:
TypeError: btn is null
var btn=ifrdoc.getElementById('btn');
哪里错了?正常的操作iframe里面的dom元素,兼容的写法?

直接调用iframe对象的document就可以,方法和document里的一样。不过注意,如果iframe是跨越引用的,会受到限制,不能访问其中内容。也就是你不能引用百度的页面,篡改其中的内容,只能改自己网站的。
<iframe src="xxx.html" id="myiframe"></iframe>
<script>
var mydoc=document.getElementById("myiframe").document;
mydoc.write("<div id='newdiv'></div>")
mydoc.getElementById("newdiv").innerText="hello";
</script>
参考技术A 您好:解决办法可以这样,写好操作dom元素的方法,然后在其他页面如果是iframe的话,可以用iframe.praent[“iframe的name”].函数名。可以这样调用。还可以用ajax页面传值。在接受页面判断这个值如果标识什么动作,就执行你写好的那个操作dom的动作就可以了。 参考技术B 没有错!在IE下运行是正确的。在chrome就不一定了。本地文件在chrome测试,一直说跨域操作文件,阻止(按F12转到script可以看到错误)。估计上传到服务器可以。追问

在ie下btn.onclick也是没有弹出来啊

追答

我这边可以弹出来啊!
是本地测试不?

追问

是啊,本地测试

以上是关于怎么获取 iframe转跳的网址的主要内容,如果未能解决你的问题,请参考以下文章

怎么获取iframe里的一个id值?

如何获取网站的网址托管我的 iframe [重复]

用a标签实现域名转跳的网页代码

swift学习笔记页面转跳的条件判断和传值

学习MVC框架,处理分页和删除分页转跳的问题

在 iframe 上隐藏引荐来源网址