Javascript 禁用";“您所做的更改可能不会保存”;弹出窗口
我使用以下前端代码导出Javascript 禁用";“您所做的更改可能不会保存”;弹出窗口,javascript,jquery,Javascript,Jquery,我使用以下前端代码导出.csv文档 HTML <form id="tool-export" method="post" action="export/">{% csrf_token %} <a id="export-link" class="btn btn-sm btn-primary" href="#">DOWNLOAD</a> </form> {%csrf\u令牌%} JS $('#export-link').click
.csv
文档
HTML
<form id="tool-export" method="post" action="export/">{% csrf_token %}
<a id="export-link" class="btn btn-sm btn-primary" href="#">DOWNLOAD</a>
</form>
{%csrf\u令牌%}
JS
$('#export-link').click(function(e) {
e.preventDefault();
var link = $(this);
var form = link.closest('form');
var project_id = proj_id.find(":selected").val();
var input = $('<input>').attr('type', 'hidden').attr('name', 'project_id').val(project_id);
form.append($(input));
var project_type = proj_type.val();
input = $('<input>').attr('type', 'hidden').attr('name', 'project_type').val(project_type);
form.append($(input));
form.submit();
});
$('#export-link').click(function(e) {
window.onbeforeunload = null;
e.preventDefault();
var link = $(this);
var form = link.closest('form');
var project_id = proj_id.find(":selected").val();
var input = $('<input>').attr('type', 'hidden').attr('name', 'project_id').val(project_id);
form.append($(input));
var project_type = proj_type.val();
input = $('<input>').attr('type', 'hidden').attr('name', 'project_type').val(project_type);
form.append($(input));
form.submit();
});
$(“#导出链接”)。单击(函数(e){
e、 预防默认值();
var-link=$(这个);
var form=link.closest('form');
var project_id=proj_id.find(“:selected”).val();
变量输入=$('').attr('type','hidden').attr('name','project_id').val(project_id);
追加($(输入));
var project_type=proj_type.val();
输入=$('').attr('类型','隐藏').attr('名称','项目类型').val(项目类型);
追加($(输入));
表单提交();
});
导出工作正常,我得到了正确的文档。但是,我也会在单击导出链接后收到您所做的更改可能无法保存的消息。如何禁用此消息?我不想看到它
@Dekel帮我拿到了它 消息就是事件。 我可以使用
window.onbeforeunload=null禁用它代码>
JS
$('#export-link').click(function(e) {
e.preventDefault();
var link = $(this);
var form = link.closest('form');
var project_id = proj_id.find(":selected").val();
var input = $('<input>').attr('type', 'hidden').attr('name', 'project_id').val(project_id);
form.append($(input));
var project_type = proj_type.val();
input = $('<input>').attr('type', 'hidden').attr('name', 'project_type').val(project_type);
form.append($(input));
form.submit();
});
$('#export-link').click(function(e) {
window.onbeforeunload = null;
e.preventDefault();
var link = $(this);
var form = link.closest('form');
var project_id = proj_id.find(":selected").val();
var input = $('<input>').attr('type', 'hidden').attr('name', 'project_id').val(project_id);
form.append($(input));
var project_type = proj_type.val();
input = $('<input>').attr('type', 'hidden').attr('name', 'project_type').val(project_type);
form.append($(input));
form.submit();
});
$(“#导出链接”)。单击(函数(e){
window.onbeforeunload=null;
e、 预防默认值();
var-link=$(这个);
var form=link.closest('form');
var project_id=proj_id.find(“:selected”).val();
变量输入=$('').attr('type','hidden').attr('name','project_id').val(project_id);
追加($(输入));
var project_type=proj_type.val();
输入=$('').attr('类型','隐藏').attr('名称','项目类型').val(项目类型);
追加($(输入));
表单提交();
});
我在Chrome中嵌入谷歌表单时也遇到了同样的错误
我可以证实,找到的解决方案中没有一个对我有帮助。以下是我弹出窗口的屏幕截图:
我成功实现的唯一解决方案是隐藏元素,然后使用当前嵌入取消隐藏/创建新的iframe
。以下是我的代码部分:
if (oldvalue !== value) { // checks the id of the form (value) is not the same
// set value of the id
$('#info').text(value);
// check the element exists
let exists = value;
if($("#" + value).length == 0) {
//it doesn't exist
exists = false;
}
// hide all child elements of the div for forms
parent.children().hide();
// create new node if needed
if (!exists)
{
// create new form element and embed the form
$("#google-form").clone().attr("id",value).attr('src', record.url).appendTo(parent);
}
// unhide error element
$("#" + value).show();
}
我的解决方案的完整代码是。在jQuery中,只需使用:
$(window).off('beforeunload');
将
标记更改为按钮或输入标记,而不使用您使用的HREF框架/插件?您看到的警报是使用beforeunload
事件创建的。要禁用它,您应该解除该事件的绑定…嗯,我不知道为什么会出现此警报,但如果在调用form.submit()后返回false
,它可能会工作得很好。@Dekel,您是对的。贴出你的答案,我会在上面签名作为解决方案。@trex,很高兴我能帮你解决这个问题。对不起,我没有听到你的评论。如果愿意的话,欢迎您找到我的一些其他答案并投票选出其中一些:)window.onbeforeunload=null;在chrome和IE中工作,但在Firefox中仍然会出现弹出窗口。如何在drupal中实现这一点?根据卸载前的MDN规范
:HTML规范规定,在此事件期间可能会忽略对window.alert()、window.confirm()和window.prompt()方法的调用。有关更多详细信息,请参阅HTML规范@来自MDN的NNR:但是请注意,并非所有浏览器都支持此方法,有些浏览器要求事件处理程序实现两个遗留方法中的一个:read more@srgbnd如果我们对onbeforeunload有自定义要求,并且如果我们将其设为null,则它在单击按钮时工作。但是,如果我们想在浏览器交叉按钮上调用onbeforeunload逻辑,那该如何工作呢?是否有一个插件,可以让我在所有/特定网站上阻止它?在google chrome和firefox上都为我工作过