渐渐模糊了约定 2024-01-10 13:00 采纳率: 17.4%
浏览 11
已结题

无法获取弹出层window对象里的内容

layer.open设计一个功能,在页面弹出层中点击按钮控制自己关闭。思路是获取弹出层window内容,当监听到弹出层按钮被点击时关闭弹出层。
但是无法获取window对象里的内容。

layer.open({
            type: 1,
            title:"墓穴查询",
            content: '<iframe style="width: 1316px;height: 617px;" src="analysis_select.jsp" frameborder="0" class="layadmin-iframe"></iframe>',
            area: ['320px', '195px'], // 初始宽高
            maxmin: true,
            success: function(layero, index){
              layer.full(index); // 最大化  
              var iframeWindow = layero.find('iframe')[0];
              console.log(iframeWindow)                          //打印弹出层window
              console.log(iframeWindow.contentWindow)            //打印弹出层window的内容contentWindow
              console.log(iframeWindow.contentWindow.layui)      // 打印contentWindow里的layui
          //submit = layero.find('iframe').contents().find('#tomb_sub_box');
              //监听提交
          // iframeWindow.layui.form.on('submit(tomb_sub_box)', function(data){
           // layer.close(index); //关闭弹层      
          // }); 
            }
            });

这是控制台的打印结果:

img

打开console.log(iframeWindow) 里的内容,找到了contentWindow:

img

可以看到contentWindow后面是一串http地址。但是用console.log(iframeWindow.contentWindow) 打印出来后面却是about:blank

打开console.log(iframeWindow.contentWindow) 里的内容,存在layui:

img

打印console.log(iframeWindow.contentWindow.layui) ,却显示没有定义:

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-10 16:45
    关注

    【以下回答由 GPT 生成】

    您好!根据您的问题描述和代码,看起来您正在尝试在弹出层窗口中实现一个功能,即点击按钮来控制关闭弹出层。您遇到了无法获取窗口对象内容的问题。下面给出一些可能的解决方案和提示,希望能帮助您解决这个问题:

    1. 提示:确认弹出层的内容是否正确加载
    在获取窗口内容之前,请确保弹出层的内容已经正确加载完成。您可以使用success回调函数来确认弹出层内容的加载情况。

    2. 提示:检查弹出层窗口的来源
    弹出层窗口是通过iframe元素加载的,所以您需要确认该iframe元素是否来自同一域名(即同源策略)。如果不是同源的话,您将无法直接访问该iframe的内容。确保analysis_select.jsp与页面的域名、端口和协议都一致。

    3. 提示:使用load事件监听iframe加载完成
    在确认弹出层内容已经加载完成后,您可以使用load事件来获取弹出层窗口的window对象。load事件会在iframe加载完成时触发。您可以将获取iframe的代码放在load事件处理程序中。以下是示例代码:

    layer.open({
        type: 1,
        title: "墓穴查询",
        content: '<iframe style="width: 1316px;height: 617px;" src="analysis_select.jsp" frameborder="0" class="layadmin-iframe"></iframe>',
        area: ['320px', '195px'], // 初始宽高
        maxmin: true,
        success: function(layero, index){
          layer.full(index); // 最大化  
          var iframe = layero.find('iframe')[0];
          iframe.onload = function() {
            var iframeWindow = iframe.contentWindow;
            console.log(iframeWindow); // 打印弹出层window
            console.log(iframeWindow.layui); // 打印contentWindow里的layui
          }
        }
    });
    

    4. 提示:处理关闭弹出层的逻辑
    当按钮被点击时,您可以调用弹出层对象的关闭方法来关闭弹出层。您可以尝试给按钮添加一个点击事件处理函数,在该函数中调用layer.close(index)来关闭弹出层。其中,index是弹出层的索引值。

    请尝试上述解决方案和提示,看是否能够正确获取弹出层窗口中的内容,特别是在点击按钮关闭弹出层的情况下。如果您仍然遇到困难,也请随时告知。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月30日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
  • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路