禁用"您所做的更改可能无法保存"弹出窗口

时间:2016-11-04 14:54:23

标签: javascript jquery

我使用以下前端代码导出jQuery(body).mouseleave(function(){}, function(e){ if (e.target == this) { bioEp.showPopup(); console.log('leave'); } else { console.log('false'); } }); 文档。

HTML

.csv

JS

  <form id="tool-export" method="post" action="export/">{% csrf_token %}
    <a id="export-link" class="btn btn-sm btn-primary" href="#">DOWNLOAD</a>
  </form>

导出效果很好,我得到了正确的文档。但是,在点击导出链接后,我收到 您所做的更改可能无法保存 消息。如何禁用此消息?我不想看到它。

enter image description here

3 个答案:

答案 0 :(得分:9)

@Dekel帮我搞定了。

消息是beforeunload事件。 我可以使用window.onbeforeunload = null;禁用它。

<强> JS

  $('#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();
  });

答案 1 :(得分:2)

在jQuery中只需使用:

$(window).off('beforeunload');

答案 2 :(得分:1)

我在将Chrome浏览器嵌入Google-Form时遇到了相同的错误,

我可以验证找到的解决方案对我没有帮助。这是我的弹出窗口的屏幕截图:

enter image description here

我设法实现的唯一解决方案是隐藏元素,然后使用当前嵌入内容取消隐藏/创建新的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();
       }

我的解决方案的完整代码为here