【发布时间】:2020-11-17 10:48:46
【问题描述】:
我正在开发一个 Django 项目,在该项目中我们为文档分配协议编号,并且在提交并关闭表单后,协议编号应出现在模式消息中。请求的功能是,如果从主窗口或从文档的弹出列表中为文件分配了协议编号,它应该始终显示一个带有已分配文件的协议编号的模式窗口。
我编写了一个 jQuery 脚本,它基于特定条件(页面 URL 包含或不包含特定字符串)- [它] 将 UPDATE 的 localStorage 值设置为 1。当这种情况发生时,它会强制重新加载活动窗口或弹出窗口,以显示具有指定协议号的模式。
不幸的是,重新加载并没有像我希望的那样发生。它在大多数时间都有效,但有时也可以:
- 强制重新加载页面或
- 根本不强制重新加载,我必须手动执行或
- (当脚本在弹出窗口中激活时)它会重新加载主页而不是弹出窗口或
- (当脚本在弹出窗口中激活时)它会重新加载弹出窗口,但除非我手动重新加载,否则不会出现模式消息
出于某种原因,我无法理解为什么脚本有时有效而有时无效。我想要一些反馈、指导,甚至是另一种方法来做到这一点,因为它真的让我大吃一惊,让我发疯!!!
这是我在项目的 base.html 中编写的脚本,位于 $(document).ready() 函数的顶部:
var ispopup = '{{ request.get_full_path }}';
if((ispopup.indexOf('_popup') > -1 ) && (ispopup.indexOf('case') > -1 )){
console.log('This is a case page in a popup');
window.setInterval(function(){
var myupdate = localStorage.getItem('update');
if(myupdate==1){
console.log("update before :"+myupdate);
localStorage.setItem("update","0");
window.location.reload();
{% if messages %}
$("#messagesModal").modal('show');
{% endif %}
localStorage['papaurl'] = "";
console.log("update after :"+myupdate);
console.log("papaurl :"+localStorage["papaurl"]);
}
},2000);
} else if((ispopup.indexOf('grandchild') == -1) && (ispopup.indexOf('_popup') == -1 )){
var thispage;
if(ispopup.indexOf('library')>-1){thispage = 'library';}
else if(ispopup.indexOf('case')>-1){thispage = 'case';}
else{thispage = 'list'}
console.log('This is a '+thispage+' page in the base page');
window.setInterval(function(){
var myupdate = localStorage.getItem('update');
if(myupdate==1){
console.log("update before :"+myupdate);
{% if not messages %}
localStorage.setItem("update","0");
window.location.reload();
{% endif %}
localStorage['papaurl'] = "";
console.log("update after :"+myupdate);
console.log("papaurl :"+localStorage["papaurl"]);
}
},2000);
}
Django 标签中的'messages' 变量包含协议号的字符串,该字符串是在该项目的Python 部分中生成和添加的。 感谢您的帮助。
【问题讨论】:
标签: jquery django bootstrap-modal