我在这里有一个应用程序,基于symfony2,我包括一个垫片和现代化器,以及history.js。
我的应用程序在FF中运行良好,但是当我在IE中运行它时,它抱怨了pushState方法。
SCRIPT438:对象不支持属性或方法'pushState' 2109519_appHistory_9.js,第114行第9个字符
这是我正在做的一个例子:
$(document).ready(function () {
"use strict"; //makes this entire object strict
app.hist.init(); //init any code on this page
});
//Self-Executing Anonymous Function (Public & Private)
(function (hist, $, undefined) {
app.hist.init = function () {
if(history){
console.log('we have history');
console.log(history);
} else if(Modernizr.history){
console.log('Modernizr.history');
console.log(Modernizr.history);
} else {
console.log('no modernizr history');
}
app.hist.title = document.title;
app.hist.url = document.URL;
window.addEventListener("popstate", function(e) { // or jquery $(window).on("popstate", function (e) {
app.hist.popState(e);
});
};
// Bind to StateChange Event
app.hist.bindHistory = function(){
History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
app.hist.state = History.getState();
});
};
app.hist.add = function () {
app.hist.title = document.title;
history.pushState( app.hist.state, app.hist.title, app.hist.url);
};
}(window.app.hist = window.app.hist || {}, jQuery));
console.logs产生此
SCRIPT5007: Object expected 0438675_head_1.js, line 1 character 3164
LOG: we have history
LOG: [object History]
SCRIPT438: Object doesn't support property or method 'pushState' 2109519_appHistory_9.js, line 114 character 9
注意,我在那里放了一个绑定方法。我在这里找到了:using history.js with IE9
这是我认为我需要帮助的地方,因为该帖子不足以让我弄清楚如何正确绑定到所需的“一切”所以这将完全有效,而不仅仅是他的状态,例如,但是标题,以及url,我甚至不知道如何使用History
获取标题和网址,我没有看到任何方法,我只看到History.getState()
,我认为应该有History.getTitle()
在某个地方https://github.com/browserstate/history.js/#exposed-api,也不应该有吗?
1)我是否需要将这样的historyjs绑定到IE或其他东西?
2)看看那个绑定方法,告诉我是否应该在init中使用它,就像我怀疑
一样3)请帮我弄清楚我在bind方法中需要什么才能正确绑定。
修改:
好的,我看到一个问题,History.getState()
,但它是一个所有3,状态,标题,网址,WTF的对象?好的,所以我可以在这里访问我的东西..
所以我猜bindHIstory看起来会更像这样吗? app.hist.bindHistory = function(){
History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
var data = History.getState();
app.hist.state = data.state;
app.hist.title = data.title;
app.hist.state = data.url;
});
};
所以,上面还有3个问题。