IE11 window.history.pushState "Object doesn't support property or method 'pushState'

toni picture toni · Apr 11, 2015 · Viewed 8k times · Source

I have this simple html code below. It works as expected (appending ?SomeParam to the url) in my development environment (Visual Studio 2010) in both Chrome and IE11. When I put this in an htm file on the web server, it works in Chrome, but in IE11 it gives "Object doesn't support property or method 'pushState'. I've searched this thoroughly and can only find that pushState is not supported in IE versions <= 9.0 but should be supported in IE10 and IE11.
Does anyone have any ideas?

<script language="javascript" type="text/javascript">
    function test1() {
        try {
            window.history.pushState("abc", "", "/?SomeParam");
        }
        catch (err) {
            alert(err.message);
        }
    }
</script>
<button id="button1" onclick="test1()">Test</button>

Answer

Luke Woodward picture Luke Woodward · Apr 11, 2015

Try adding the following meta tag to your page, if you haven't done so already:

<meta http-equiv="x-ua-compatible" content="IE=edge">

Ensure also that this is the first meta tag on the page.

Are you running this application on an intranet? If so, IE11 may decide to emulate an older version of IE (check this using F12 Developer Tools). The above meta tag should stop IE from doing this and force it to render the page in IE11 mode.