From 99bc5e7fb66471da9638848277a26c553879b373 Mon Sep 17 00:00:00 2001 From: Ella Iseulde Van Dorpe <iseulde@git.wordpress.org> Date: Sun, 28 Aug 2016 18:28:52 +0000 Subject: [PATCH] Editor: Use Beacon API over sync request See https://www.w3.org/TR/beacon/ for more information. git-svn-id: https://develop.svn.wordpress.org/trunk@38425 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/js/post.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/wp-admin/js/post.js b/src/wp-admin/js/post.js index 1ead4bed1c..5ca772b963 100644 --- a/src/wp-admin/js/post.js +++ b/src/wp-admin/js/post.js @@ -407,16 +407,31 @@ jQuery(document).ready( function($) { return; } - $.ajax({ - type: 'POST', - url: ajaxurl, - async: false, - data: { - action: 'wp-remove-post-lock', - _wpnonce: $('#_wpnonce').val(), - post_ID: $('#post_ID').val(), - active_post_lock: $('#active_post_lock').val() + var data = { + action: 'wp-remove-post-lock', + _wpnonce: $('#_wpnonce').val(), + post_ID: $('#post_ID').val(), + active_post_lock: $('#active_post_lock').val() + }; + + if (window.FormData && window.navigator.sendBeacon) { + var formData = new window.FormData(); + + $.each(data, function(key, value) { + formData.append(key, value); + }); + + if (window.navigator.sendBeacon(ajaxurl, formData)) { + return; } + } + + // Fall back to a synchronous POST request. + // See https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon + $.post({ + async: false, + data: data, + url: ajaxurl }); });