You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需修改设备日期让iframe中的WebUntis显示指定日期课程表?

解决iframe嵌入WebUntis指定日期的方法

核心问题说明

你之前修改主页面的Date对象无效,是因为iframe属于独立的页面上下文,且WebUntis页面是读取dojoConfig.grupet.currentDate这个预设变量,而非直接获取系统时间,得从这个变量入手处理。

分场景解决方案:

  • 同源场景(你的网站和WebUntis页面同域名/协议/端口)
    等iframe加载完成后,直接操作它的window对象修改目标变量:

    // 假设你的iframe的id为webuntisFrame
    const iframe = document.getElementById('webuntisFrame');
    iframe.onload = function() {
      // 注意日期格式要和原页面grupet.currentDate一致,比如'2023-09-09'或对应时间戳
      iframe.contentWindow.dojoConfig.grupet.currentDate = '2023-09-09';
      // 部分场景下需要触发页面刷新逻辑,比如调用原页面的刷新函数:
      // iframe.contentWindow.refreshCourseSchedule();
    };
    

    若不清楚刷新函数,可修改变量后手动刷新iframe,或查看原页面的网络请求逻辑模拟触发数据加载。

  • 跨域场景(网站与WebUntis页面不同源)
    浏览器同源策略会限制直接操作iframe变量,可尝试以下两种方式:

    1. URL参数传参测试:多数教务系统支持通过URL参数指定日期,将iframe的src修改为原WebUntis地址?date=2023-09-09(参数名可能为day/selectedDate,需自行测试)。
    2. 浏览器脚本修改:安装Tampermonkey油猴脚本,编写脚本在WebUntis页面加载时修改目标变量,示例如下:
      // ==UserScript==
      // @name         WebUntis 指定日期
      // @match        WebUntis页面的完整地址
      // @grant        none
      // ==/UserScript==
      
      window.addEventListener('load', function() {
        // 替换为你需要的日期,格式与原页面保持一致
        dojoConfig.grupet.currentDate = '2023-09-09';
        // 触发页面数据刷新,比如模拟点击刷新按钮:
        // document.querySelector('.refresh-button').click();
      });
      
      脚本直接运行在WebUntis页面上下文,不受跨域限制。

补充提示

你之前编写的修改Date对象的代码,仅作用于主页面,iframe内的Date是独立的,且目标页面并未直接调用new Date()获取当前时间,因此无法生效,必须针对dojoConfig.grupet.currentDate进行修改。

内容的提问来源于stack exchange,提问作者paul00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 06:47:16