推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
PHPer233

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

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

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