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

1

7

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>
Heptastich answered 11/4, 2015 at 14:35 Comment(1)
history is a single DOM object in IE. Try history.pushState.Reconcile
P
13

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.

Physicalism answered 11/4, 2015 at 16:57 Comment(1)
Even with the developer tools showing the mode as Edge, I was still getting the error in this question. Setting the meta tag fixed it. So it looks like the developer tools can't necessarily be trusted.Euphroe

© 2022 - 2024 — McMap. All rights reserved.