2013-09-06 35 views
5

Im usnig History.js để đẩy url nhưng trong IE, nó gắn thêm tên trang.History.js PushState trong trình duyệt html 4 (IE) thay đổi url không chính xác

nếu url ban đầu của tôi là: http://www.mydomain.com/Home.aspx

và sau đó tôi thực hiện như sau:

var url = window.location.protocol + '//' + window.location.host + '/ Trang chủ .aspx? id = 2 & pl = 4 '; History.pushState (null, null, url)

Trong Chrome url của tôi trở thành: http://www.mydomain.com/Home.aspx?id=2&pl=4

Trong IE 8 url của tôi trở thành: http://www.mydomain.com/Home.aspx#Home.aspx?id=2&pl=4

Nếu tôi dán url IE 8 trong chrom mã của tôi thất bại ...

Thứ nhất, url html 4 chính xác sẽ trông như thế nào và thứ hai, làm cách nào để khắc phục sự cố?

+0

Vấn đề của bạn là mọi thứ sau # đều KHÔNG được gửi đến máy chủ. Vì vậy, mydomain.com/Home.aspx sẽ không bao giờ nhận được id và pl sau khi băm. – patrick

+0

Những gì bạn có được dự định, tôi đang sử dụng trong trang web khách hàng của chúng tôi và nó hoạt động giống như cách bạn đã đưa ra và nó hoạt động tốt. URL có Hash cũng sẽ hoạt động chính xác trong trình duyệt Chrome. –

Trả lời

0

Tôi tin rằng bạn không đẩy trạng thái đúng cách, hãy thử định dạng lại url bạn đẩy, ví dụ: History.pushState({data: 'home'}, null, '/Home/').

Hoặc có thể bạn nghĩ rằng việc đẩy trạng thái cũng gửi yêu cầu đến máy chủ giống như bạn đã làm với truy vấn? Nó không phải bạn thân.

Vì vậy, bạn không mong đợi bất cứ điều gì để làm việc bằng cách dán u nhà nước được đẩy vào các trình duyệt khác. Đầu tiên, bởi vì các trình duyệt khác không có lịch sử về trang web của bạn và thứ hai bạn cần phải nắm bắt sự kiện statechange với Lịch sử.

ví dụ:

History.Adapter.bind(window, 'statechange', 
     function() { 
     if (History.getState().data.page === 'home') { 
      //do what u would like with current state 
     } 
    ); 
+0

Sự kiện statechange không phải là vấn đề. Đó là tất cả các công trình. Nếu tôi đẩy '/ Home /' và sau đó đánh dấu trang đó và sau đó tải lại trang nó sẽ không hoạt động như asp.net đang mong '.aspx' ở cuối nhà ... Im chạy trên một trang web Sharepoint. –

Các vấn đề liên quan