2010-01-14 32 views
6

Tôi đang phát triển một ứng dụng web, do truy cập cơ sở dữ liệu chậm, không phải tất cả nội dung trong trang đều được tải ngay lập tức. sau khi tùy chọn thực hiện lựa chọn.Sự khác biệt trong Internet Explorer và Firefox khi tải động nội dung sau đó tiến lên và quay lại

Tính năng này hoạt động tốt. Tuy nhiên, sau khi tải động nội dung, nếu tôi điều hướng đến một trang web khác, sau đó điều hướng trở lại, trong Internet Explorer nội dung đã tải sẽ biến mất, nghĩa là trang sẽ được hoàn nguyên về trang đã truy xuất ban đầu. Tuy nhiên, trong Firefox (và Opera), nội dung được tải sẽ vẫn ở đó, tức là trang sẽ trông giống như trước khi tôi điều hướng khỏi nó.

Hành vi của Firefox là hành vi mong muốn trong trường hợp của tôi, vì người dùng thường sẽ điều hướng đến các trang con và quay lại trang chính. Câu hỏi của tôi là do đó, có cách nào tôi có thể buộc Internet Explorer để triển lãm hành vi này, hoặc là có bất kỳ cách giải quyết có thể để có được kết quả mong muốn?

Trả lời

3

Đây là giải pháp khắc phục sự cố cho IE của tôi. Nó sử dụng thực tế là, ngay cả khi DOM được đặt lại khi điều hướng đi và quay trở lại một trang, các giá trị trường đầu vào vẫn được ghi nhớ.

Đối với mỗi phần tử được tải động, tôi cũng có trường nhập ẩn mà tôi "lưu" giá trị được tải. Sau đó tôi có một hàm transferFromCache() sao chép các giá trị từ mỗi trường đầu vào bị ẩn vào phần tử tương ứng. Hàm này được chạy ở trang init - trong trường hợp của IE, ở tải trang VÀ mỗi khi một điều hướng trở lại trang.

Kỹ thuật này có thể được sử dụng để lưu trữ các giá trị của các biến javascript.

2

Tôi không nghĩ rằng có một phương pháp để IE có thể mô phỏng FF theo cách này. Lý do là làm với các khía cạnh khá cơ bản của các trình duyệt. FF sử dụng một cơ chế cho lịch sử trang của nó được gọi là 'Bộ nhớ đệm nhanh DOM' (từ hiểu biết hạn chế của tôi) về cơ bản có nghĩa là khi nó đặt một trang vào lịch sử trình duyệt thì nó sẽ lưu trữ DOM hiện tại (vì vậy trạng thái trang hiện tại) định dạng, có nghĩa là khi trang được tải lại từ lịch sử, trạng thái được giữ nguyên và FF có thể làm điều này nhanh hơn nhiều vì rất nhiều công việc đã được thực hiện (phân tích HTML thành DOM, v.v.). Trong khi đó, IE sẽ chỉ lưu trữ HTML đã nhận ban đầu như là tệp lịch sử của nó và sẽ tải lại nó khi điều hướng lịch sử.

+0

Dường như, đối với IE, điều này gần như vậy nhưng không hoàn toàn. Ví dụ, trong ứng dụng của tôi, tôi sử dụng javascript lọc và phân trang (của nội dung trong một bảng). Tôi sử dụng các hộp nhập "chọn" để lọc. Trong cả IE và FF, các tùy chọn đã chọn được ghi nhớ sau khi điều hướng đi và ngược lại. Tôi sử dụng biến javascript cho trạng thái phân trang. Đây là thông tin được ghi nhớ trong FF, nhưng đặt lại trong IE. –

2

Đây là số article about saving state in session variables, có thể giúp

+0

Cảm ơn. Bài viết này dường như mô tả hành vi của IE. Trong FF, javascript không được đặt lại khi điều hướng đi và quay lại. Nhưng cách giải quyết có thể hữu ích trong IE, tôi có thể thử cách thứ hai (sử dụng các trường nhập ẩn để lưu trữ thông tin). –

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