Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用";“您所做的更改可能不会保存”;弹出窗口_Javascript_Jquery - Fatal编程技术网

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上都为我工作过