Oracle Apex 4.2具有自定义事件的动态操作”;“卸载前”;不起作用
因此,我创建了一个自定义动态操作,该操作应该在“卸载前”运行(以防用户意外关闭选项卡/浏览器或以非预期的方式离开页面)。此动态操作运行一个简单的plsql过程()。几天前,Chrome浏览器更新为80版,在这个新版本中,“beforeunload”是不允许的,现在我的动态操作不起作用 有人知道我如何以不同的方式构建此功能吗?Apex 4.2有问题 我猜你是在解雇页面中点击了不允许同步XHR,所以要翻页 您的DA为异步DA尝试设置的等待结果属性 你的动态行为是错误的Oracle Apex 4.2具有自定义事件的动态操作”;“卸载前”;不起作用,oracle,oracle-apex,Oracle,Oracle Apex,因此,我创建了一个自定义动态操作,该操作应该在“卸载前”运行(以防用户意外关闭选项卡/浏览器或以非预期的方式离开页面)。此动态操作运行一个简单的plsql过程()。几天前,Chrome浏览器更新为80版,在这个新版本中,“beforeunload”是不允许的,现在我的动态操作不起作用 有人知道我如何以不同的方式构建此功能吗?Apex 4.2有问题 我猜你是在解雇页面中点击了不允许同步XHR,所以要翻页 您的DA为异步DA尝试设置的等待结果属性 你的动态行为是错误的 这里有一个完整的答案,你应该能
这里有一个完整的答案,你应该能够适应你的情况
create table beacons (
id number generated always as identity primary key,
app_user varchar2(255),
date_sent date,
data varchar2(4000)
);
我对数据使用了varchar2,但如果需要,可以使用CLOB。我将使用Ajax的p_clob_01参数传递数据insert into beacons (
app_user,
date_sent,
data
) values (
:APP_USER,
sysdate,
apex_application.g_clob_01
);
var beaconData = {
test: 'value'
};
var formData = new FormData();
formData.append('p_flow_id', '&APP_ID.');
formData.append('p_flow_step_id', '&APP_PAGE_ID.');
formData.append('p_instance', '&APP_SESSION.');
formData.append('p_debug', '');
formData.append('p_request', 'APPLICATION_PROCESS=RECEIVE_BEACON');
formData.append('p_clob_01', JSON.stringify(beaconData));
navigator.sendBeacon('/pls/apex/wwv_flow.ajax', formData);
保存更改并运行页面。然后刷新页面以触发动态操作并发送信标。本例展示了如何从JavaScript发送随机数据,同时获取与会话相关的数据,如用户名。您看到了吗?是的,我有…但我不知道如何在apexI中实现这一点,我可能会向您展示如何实现,但首先,请告诉我一些关于操作中的PL/SQL代码和JavaScript代码正在做什么(我需要确保您仍然可以这样做)。另外,您是否有能力在SQL Workshop中创建RESTAPI。。。我想我有一些足够通用的东西,你可以不用ORD。我很快会发布一个答案。谢谢你如此详尽的回答。即使取消勾选“等待结果”的动态行动解决了我的问题,我一定会研究你的解决方案!这使得它成为一个异步Ajax请求。一定要用不同的浏览器测试它。这篇文章似乎暗示它可能不适用于所有这些方法:“确保在卸载文档期间发送数据历来很困难,因为用户代理通常会忽略卸载处理程序中的异步XMLHttpRequests。”上述解决方案使用
sendBeacon
方法,它是为了做你正在做的事情而构建的,但是IE不支持它:关于这个的一点更新。所以我的解决方案不可靠。运行的过程是一个简单的delete语句,其中我传递了一个id,它从一个具有该id的表中删除了一行。我发现它并不是在测试环境中删除行(每次进行测试时,它都工作)。所以我决定试试你的解决方案。让它工作(当我测试它时)。但再一次,在测试中,我看到它并没有删除行。你知道为什么它不能100%的工作吗?所有用户都使用Chrome浏览器。所以“测试环境”是一群人使用Chrome手动测试应用程序?它不是自动化的吗?不,它不是自动化的。我能找到DA不触发的唯一情况是会话超时。考虑到行不被删除的频率,我怀疑这是一直在发生的事情。