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

Oracle APEX中JavaScript无法解析静态占位符,如何获取静态文件URL

Oracle APEX 静态资源在JS场景下的URL获取问题

在Oracle APEX中集成浏览器通知(Notification)功能时,遇到自定义通知图标无法正常显示的问题。
这类通知图标需要传入图片的可公开访问URL才能正常加载。Oracle APEX支持上传静态文件,常规页面渲染场景下可以通过#WORKSPACE_IMAGES#image.png的格式引用工作区上传的静态资源,但这类占位符在JavaScript运行环境中不会被自动替换。
核心待解决问题:如何在JavaScript中获取Oracle APEX工作区下静态PNG文件的稳定有效访问URL

为定位问题,对不同格式的图标路径参数做了全量测试,相关测试代码如下:

showNotification(
    // "https://developers.google.com/web/images/web-fundamentals-icon192x192.png", // 配置后图标可正常加载
    // "r/xxxxx/files/static/v71/image.png",                                        // 配置后图标可正常加载,但路径会随版本变动
    // "#WORKSPACE_IMAGES#image.png",                                               // 配置后图标无法加载
    // "&WORKSPACE_IMAGES.image.png",                                               // 配置后图标无法加载
    // "#IMAGE_PREFIX#image.png",                                                   // 配置后图标无法加载
    // "&IMAGE_PREFIX.image.png",                                                   // 配置后图标无法加载
    notification.title,
    notification.body,
    () => parent.focus()
);

const showNotification = (icon, title, body, onclick) => {
    // 检查浏览器是否支持通知能力
    if (!("Notification" in window)) {
        alert("当前浏览器不支持桌面通知功能");
    }
    // 检查通知权限是否已授予
    else if (Notification.permission === "granted") {
        // 权限校验通过,创建通知实例
        let notification = new Notification(title, {
            icon: icon,
            body: body,
        });
        notification.onclick = onclick;
    }
    // 权限未授予时,向用户发起权限申请
    else if (Notification.permission !== "denied") {
        Notification.requestPermission();
    }
};

测试结果

可正常生效的配置

  • 外部公开图片完整URL,例如https://developers.google.com/web/images/web-fundamentals-icon192x192.png
  • APEX静态资源实际渲染路径r/xxxxx/files/static/v71/image.png:通过APEX图片展示组件正常渲染后抓取的实际图片地址,可以正常加载,但路径会随APEX版本迭代、静态资源版本升级发生变动,不具备长期稳定性

无法正常生效的配置

  • #WORKSPACE_IMAGES#image.png
  • &WORKSPACE_IMAGES.image.png
  • #IMAGE_PREFIX#image.png
  • &IMAGE_PREFIX.image.png

运行环境说明

  • 所用Oracle APEX版本为20.2,部署在自治数据库(Autonomous Database)环境下

最终落地解决方式

将通知图标图片上传至自有托管服务对应的固定域名下,通过该域名的永久固定URL访问图片,解决了通知图标加载失效的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 00:15:03