javascript - 在 Sharepoint 表单中添加附件时,使用 addEventListener beforeunload 保存事件不会触发
问题描述
我正在使用 IE11、JavaScript 和 SharePoint 2013。有一个主页可以打开一个新表单选项卡 ( NewForm.aspx
) 以添加或编辑选项卡表单 ( EditForm.aspx
) 以编辑记录。
当用户在新表单选项卡中保存时,它会保存数据、刷新主页并关闭新表单选项卡。
当用户在编辑表单选项卡中保存时,它会保存数据、刷新主页、刷新编辑表单选项卡并停留在该编辑表单选项卡记录上。
这适用于下面提供的代码,除非用户通过 SP 功能区中的附加文件按钮附加文件。它进入 Save click 事件,点击window.addEventListener
,然后跳过它。用户默认返回到 SP 库AllItems.aspx
列表。
我尝试将代码仅放入保存单击而不是 beforeunload 事件侦听器中,但是附件不会保存到项目中。
我已经尝试捕获文件附加事件 ( $('input[id=attachOKbutton]')
) 并添加一个 beforeunload 侦听器。
同样的问题是保存记录并保留在 EditForm 选项卡上,即使用户附加了文件也是如此。
$(function() {
$('input[value=Save]').click(function() {
window.addEventListener("beforeunload", function(event) { //does not go in here if file is attached
var idxForm = location.pathname.indexOf("NewForm.aspx");
if( idxForm >= 0 ) { //NewForm - Saving a new record
window.opener.location.reload(); //Refresh calling page
window.close();
}
var idxForm2 = location.pathname.indexOf("EditForm.aspx")
if( idxForm2 >= 0 ) { //EditForm - Saving an update to a existing record
window.opener.location.reload(); //Refresh calling page
history.go(-1);
location.reload(true);
}
});
});
});
实际结果:记录与附件一起保存,用户被定向到 SP 库,AllItems.aspx
或者用户停留在EditForm.aspx
选项卡上,但记录未使用添加的附件进行更新。
期望/预期结果:执行与用户保存而不添加附件时的操作完全相同...调用页面已更新,编辑页面已更新,用户停留在编辑页面上。当用户添加附件时也需要这样做。
解决方案
最终使用 EditForm url 在保存事件上设置会话 cookie 并在 AllItems.aspx 中对其进行测试,因此如果为 true,它将重定向回特定的编辑记录页面。
推荐阅读
- python - 将 rugarch R 库导入 python
- javascript - 如何在 laravel 的多个选项卡中导出数据表?
- angular - 使用 api 在事件数组中添加新事件后,更新的完整日历事件未呈现
- delphi - Delphi - 如何将多个 JPG 图像添加到 TCanvas 并打印它们
- xpath - 如何使用 xpath 从类中获取文本
- javascript - 动态添加列
- reactjs - 使用每个问题的答案为每个问题创建一个反应选择
- django - 使用 nginx 作为代理服务器在同一个 ubuntu 实例上运行多个 django 项目,nginx 将一些请求从一个域转发到错误的端口
- python - 如何擦除/删除 QGraphicPathItem 的特定部分?
- excel - Excel VBA - 单击排序按钮或从 IE 的下拉列表中选择