Editor: ensure the page is refreshed when the users navigate to it with the Back or Forward buttons. In these cases the browsers usually load the page from (memory) cache and it contains the old editor content.
Fixes #35852. git-svn-id: https://develop.svn.wordpress.org/trunk@37619 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
014fda7a20
commit
3afb9f4839
@ -43,7 +43,8 @@ add_action( 'admin_head', 'wp_color_scheme_settings' );
|
||||
add_action( 'admin_head', 'wp_site_icon' );
|
||||
add_action( 'admin_head', '_ipad_meta' );
|
||||
|
||||
add_action( 'post_edit_form_tag', 'post_form_autocomplete_off' );
|
||||
add_action( 'admin_print_scripts-post.php', 'wp_page_reload_on_back_button_js' );
|
||||
add_action( 'admin_print_scripts-post-new.php', 'wp_page_reload_on_back_button_js' );
|
||||
|
||||
add_action( 'update_option_home', 'update_home_siteurl', 10, 2 );
|
||||
add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 );
|
||||
|
@ -1373,3 +1373,26 @@ function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $f
|
||||
|
||||
return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_utility_menu);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables autocomplete on the 'post' form (Add/Edit Post screens) for WebKit browsers,
|
||||
* as they disregard the autocomplete setting on the editor textarea. That can break the editor
|
||||
* when the user navigates to it with the browser's Back button. See #28037
|
||||
*
|
||||
* Replaced with wp_page_reload_on_back_button_js() that also fixes this problem.
|
||||
*
|
||||
* @since 4.0.0
|
||||
* $deprecated 4.6.0
|
||||
*
|
||||
* @global bool $is_safari
|
||||
* @global bool $is_chrome
|
||||
*/
|
||||
function post_form_autocomplete_off() {
|
||||
global $is_safari, $is_chrome;
|
||||
|
||||
_deprecated_function( __FUNCTION__, '4.6' );
|
||||
|
||||
if ( $is_safari || $is_chrome ) {
|
||||
echo ' autocomplete="off"';
|
||||
}
|
||||
}
|
||||
|
@ -891,24 +891,6 @@ function heartbeat_autosave( $response, $data ) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables autocomplete on the 'post' form (Add/Edit Post screens) for WebKit browsers,
|
||||
* as they disregard the autocomplete setting on the editor textarea. That can break the editor
|
||||
* when the user navigates to it with the browser's Back button. See #28037
|
||||
*
|
||||
* @since 4.0.0
|
||||
*
|
||||
* @global bool $is_safari
|
||||
* @global bool $is_chrome
|
||||
*/
|
||||
function post_form_autocomplete_off() {
|
||||
global $is_safari, $is_chrome;
|
||||
|
||||
if ( $is_safari || $is_chrome ) {
|
||||
echo ' autocomplete="off"';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove single-use URL parameters and create canonical link based on new URL.
|
||||
*
|
||||
@ -936,3 +918,21 @@ function wp_admin_canonical_url() {
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Output JS that reloads the page if the user navigated to it with the Back or Forward button.
|
||||
*
|
||||
* Used on the Edit Post and Add New Post screens. Needed to ensure the page is not loaded from browser cache,
|
||||
* so the post title and editor content are the last saved versions. Ideally this script should run first in the head.
|
||||
*
|
||||
* @since 4.6.0
|
||||
*/
|
||||
function wp_page_reload_on_back_button_js() {
|
||||
?>
|
||||
<script>
|
||||
if ( typeof performance !== 'undefined' && performance.navigation && performance.navigation.type === 2 ) {
|
||||
document.location.reload( true );
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user