V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
liteyou
V2EX  ›  问与答

把一个页面用 iframe 给另外一个页面通过 js 跨域调用,怎么显示不出来?

  •  
  •   liteyou · 2017-04-26 15:53:41 +08:00 · 1573 次点击
    这是一个创建于 2797 天前的主题,其中的信息可能已经有所发展或是发生改变。

    page_a.js :

    <div id="id_1">
        <script type="text/javascript">
                document.write('<Iframe src="page_a_url" width="600" height="400" scrolling="Yes" frameborder="0" name="page_a"></iframe>')
        </script>
    </div>
    

    其他页面跨域调用 page_a.js :

    <div id="id_2">
        <script src=".../page_a.js"></script>
    </div>
    

    显示不出来iframe里的内容,是哪里有问题?

    15 条回复    2017-04-26 23:21:52 +08:00
    msg7086
        1
    msg7086  
       2017-04-26 16:08:39 +08:00
    你有打开浏览器的控制台检查过错误信息么?
    liteyou
        2
    liteyou  
    OP
       2017-04-26 16:27:53 +08:00 via Android
    @msg7086 看了,没提示错误,就是引用的 iframe 区域空白一片。看起来,是 page_a 根本没有引用进来
    POPOEVER
        3
    POPOEVER  
       2017-04-26 16:40:23 +08:00
    Iframe 大写 I ?
    lianyue
        4
    lianyue  
       2017-04-26 16:42:15 +08:00
    page_a.js :

    你直接在 js 里面写 html ?
    msg7086
        5
    msg7086  
       2017-04-26 16:45:51 +08:00
    @lianyue 才反应过来……突然笑死
    POPOEVER
        6
    POPOEVER  
       2017-04-26 16:46:30 +08:00
    document.write 写出来的是字符串,不是 dom 元素,你得写 innerHTML 进去
    geelaw
        7
    geelaw  
       2017-04-26 16:53:58 +08:00
    @POPOEVER HTML 标签名是大小写不敏感的,并且 canonical 的 tagName 是 IFRAME
    geelaw
        8
    geelaw  
       2017-04-26 16:54:35 +08:00
    @POPOEVER document.write 可以写 HTML
    liteyou
        9
    liteyou  
    OP
       2017-04-26 16:57:20 +08:00
    @POPOEVER Iframe 的 I 大写是个笔误了=_=!! 改了小写也没效果。还是现实空白:

    element.style {
    }
    user agent stylesheet
    script {
    display: none;
    }
    geelaw
        10
    geelaw  
       2017-04-26 16:59:07 +08:00
    另外 script 元素应该设定 type=application/javascript 或者 text/javascript 。

    而且楼主还是没有发现自己的 JavaScript 代码文件根本不是 JavaScript 代码么?
    liteyou
        11
    liteyou  
    OP
       2017-04-26 17:02:32 +08:00
    @lianyue
    @msg7086

    直接引用这段框架 <Iframe src="page_a_url" width="600" height="400" scrolling="Yes" frameborder="0" name="page_a"></iframe>,可以显示。用 document.write()之后,还要转换成(obj).html()吗?
    nfroot
        12
    nfroot  
       2017-04-26 17:30:03 +08:00
    @geelaw 指导了一堆 你却把 js 文件里的其他内容忽略了?
    geelaw
        13
    geelaw  
       2017-04-26 17:33:45 +08:00 via iPhone
    @nfroot 实际上我连这个哪里跨域都没看见
    POPOEVER
        14
    POPOEVER  
       2017-04-26 22:14:10 +08:00   ❤️ 1
    @geelaw 嗯,你是对的,是我想当然了
    @liteyou 上面几位讲的问题修了么?你的 page_a.js 里有 html 代码,应该只有一句话
    document.write('<Iframe src="page_a_url" width="600" height="400" scrolling="Yes" frameborder="0" name="page_a"></iframe>');
    liteyou
        15
    liteyou  
    OP
       2017-04-26 23:21:52 +08:00 via Android
    @POPOEVER 下午修过了,还是谢谢你😊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1002 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 18:28 · PVG 02:28 · LAX 10:28 · JFK 13:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.