[wp-trac] [WordPress Trac] #54568: WordPress admin overwrite JS history.state

WordPress Trac noreply at wordpress.org
Fri Dec 3 12:44:22 UTC 2021


#54568: WordPress admin overwrite JS history.state
---------------------------+-----------------------------
 Reporter:  maximeschoeni  |      Owner:  (none)
     Type:  defect (bug)   |     Status:  new
 Priority:  normal         |  Milestone:  Awaiting Review
Component:  General        |    Version:  trunk
 Severity:  normal         |   Keywords:  has-patch
  Focuses:  javascript     |
---------------------------+-----------------------------
 WordPress admin is injecting a piece of javascript at runtime
 (https://developer.wordpress.org/reference/functions/wp_admin_canonical_url/)
 that prevent accessing history.state. This is annoying because you cannot
 use {{{history.pushState()}}} and {{{history.replaceState()}}} functions
 properly in javascript.

 Reproduce the bug:
 1. Navigate to any wp admin page and open the browser developer console
 2. Enter {{{window.history.replaceState({name: "hello"}, null)}}} in
 console
 3. Navigate to any other page
 4. Go back and enter {{{history.state // result -> null}}}

 Problem:
 The code overwrites any history.state with {{{null}}} value:
 {{{
 window.history.replaceState( null, null, document.getElementById( 'wp-
 admin-canonical' ).href + window.location.hash );
 }}}

 Solution:
 Replace {{{null}}} value by {{{window.history.state}}} (which also default
 to null):
 {{{
 window.history.replaceState( window.history.state, null,
 document.getElementById( 'wp-admin-canonical' ).href +
 window.location.hash );
 }}}

 The fix is very easy and has no side effect.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/54568>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list