首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
V2EX  ›  JavaScript

js 能不能获取 iframe 框架的 html 源码?

  •  1
     
  •   PHPer233 · 364 天前 via iPhone · 2327 次点击
    这是一个创建于 364 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在 A 网页的页面上用 js 创建一个 iframe,这个 iframe.src 等于 B 网页的某个页面。我想在 iframe 加载完成后在 A 页面上用 js 获取 iframe 的 html 内容。这个功能弄了半天没搞出来,特来请教一下。
    20 回复  |  直到 2018-10-25 00:13:04 +08:00
        1
    xiaoxinshiwo   364 天前
    iframe.contentWindow, 获取 iframe 的 window 对象
    iframe.contentDocument, 获取 iframe 的 document 对象
    不能吗?
        2
    shyangs   364 天前
    As 1F.
    BTW, 有沒跨域.
        3
    Seanfuck   364 天前
    跨域的话肯定不行
        4
    duan602728596   363 天前 via iPhone
    不要忘了,获取要在 iframe 的 load 事件内执行
        5
    PHPer233   363 天前 via iPhone
    @Seanfuck A 和 B 是两个不同的域名。这应该是跨域了吧?真的没办法操作吗?
        6
    yoshiyuki   363 天前
    可以让后端帮你拿呀
        7
    shintendo   363 天前
    跨域不能的吧
    不然你在自己网页上放个隐藏 iframe,指向 X 站,然后用户又有 X 站的登录状态,那你不就拿到他的 X 站页面上的内容了
        8
    djs   363 天前
    后台抓呗
        9
    097ecom   363 天前
    如果 iframe 里面的 URL 和你网站的网址为同一个,那就可以,否则不行,跨域了
        10
    agdhole   363 天前
    跨域会拦截
        11
    zhzer   363 天前 via Android
    不能,别说 iframe,本窗口中的 js 能拿到手的文本都是浏览器处理完的
        12
    Foxkeh   363 天前 via iPhone
    请百度 iframe 父子兄弟调用
        13
    t6attack   363 天前
    你实在要想实现的话,把这个扩展装上,开关打开,就可以了。
    https://chrome.google.com/webstore/detail/nlfbmbojpeacfghkpbjhddihlkkiljbi
        14
    loginv2   363 天前 via Android
    你拿不到,但是它可以主动给你
        15
    t6attack   363 天前
    这个问题,正好可以解释下浏览器跨域限制的逻辑。其实不难理解。

    如果按你说的这个方法,这样可以的话。那么你访问一个网站,网站方就可以随意构建 0 像素 iframe,指向任意网站,并把代码传回服务端。这就相当于把你变成代理了。只要你停留在页面上,网站方就可以以 你的 IP 身份 上网、爬取信息、甚至黑客行为。。那样互联网不就乱套了么?
        16
    SoloCompany   363 天前 via iPhone
    如果你可以控制 iframe 的内容,那么可以使用 sendmessage 跨域传递消息
        17
    PHPer233   363 天前 via iPhone
    @t6attack 有道理
        18
    cdwyd   363 天前
    其实是可以拿到的,用的是安卓部分早期浏览器的一个漏洞,亲测可以拿到别人网站的源代码。
    具体代码现在估计找不到了,不过搂着可以按这个方向搜索下资料
        19
    OctopusGO   363 天前 via Android
    可以,我以前遇到过这个问题,我明天上班了把以前的代码给你
        20
    PHPer233   363 天前 via iPhone
    @OctopusGO 真的吗?谢谢啦
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3927 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 09:51 · PVG 17:51 · LAX 02:51 · JFK 05:51
    ♥ Do have faith in what you're doing.