如何对Dynamic Action Confirm弹窗的页项转义文本进行Unescape处理?
解决方法
针对Oracle APEX中动态动作Confirm弹窗的页项HTML内容被转义的问题,有两种可落地的方案:
方案1:改用自定义JS实现确认逻辑(推荐,安全性更高)
原生Confirm动态动作默认会对替换符引用的内容做转义,你可以直接替换成JS代码手动解码:
- 删除原有类型为「Confirm」的动态动作,新增一个「执行JavaScript代码」类型的动态动作
- 写入以下代码:
// HTML实体解码方法 function decodeHtml(html) { const tempEle = document.createElement('textarea'); tempEle.innerHTML = html; return tempEle.value; } // 获取页项值并解码 const confirmMsg = decodeHtml(apex.items.P1_MESSAGE.getValue()); // 弹出确认框,根据选择执行后续逻辑 if (confirm(confirmMsg)) { // 确认后要执行的操作示例:提交页面/触发其他动态动作 apex.submit('YOUR_REQUEST'); // 如果后续还要跑原有绑定在Confirm之后的动作,可以先给一个隐藏页项赋值,后续动作加对应判断条件即可 }
方案2:修改页项安全配置(仅适用于页项内容完全可控的场景)
如果你的P1_MESSAGE内容完全由系统生成、没有用户输入的内容,可以直接关闭页项的转义开关:
- 打开页项P1_MESSAGE的属性面板,找到「安全」分类
- 取消勾选「转义特殊字符」保存即可
注意:该方案存在XSS注入风险,若页项值允许用户自定义不要使用
内容的提问来源于stack exchange,提问作者ES.
相关产品推荐
相关产品推荐

