7

Trang web của chúng tôi sử dụng cuộc gọi và sử dụng AJAX XMLHTTPRequest để đạt được điều đó. Khi khách hàng sử dụng một cá thể IE duy nhất thông qua ngày và truy cập và điều chỉnh trang một cách đáng kể trong IE đó, chúng tôi kết thúc với ngoại lệ bộ nhớ và buộc phải đóng IE.Mục đích của tùy chọn "Bật hỗ trợ XMLHTTP gốc" trong IE

Bằng cách bật tùy chọn Enable native XMLHTTP support trong tab Advnaced của IE, khắc phục sự cố. Vì chúng ta thích đối tượng XMLHTTP nguyên gốc hơn ActiveXObject, ngoại lệ có thể là do sử dụng ActiveXObject. Nhưng vẫn không chắc chắn những gì có thể là nguyên nhân gốc rễ hoặc là có cách nào khác tốt hơn để giải quyết vấn đề. Chúng tôi sử dụng IE8. Chúng tôi chưa bao giờ gặp phải bất kỳ vấn đề nào như vậy trong các trình duyệt khác (Firefox và chrome). Cảm ơn

+0

https://github.com/Pita/etherpad-lite/wiki/How-to-enable-native-XMLHTTP-support-in-IE –

+4

@Quoi, đây không phải là câu trả lời. Nó chỉ là một trường hợp khác. – Raptor

+0

Tôi có hiểu không? IE có cài đặt XHR được xây dựng sẵn, tuân theo tiêu chuẩn nhưng đã tắt theo mặc định? – Bergi

Trả lời

5

Bật hỗ trợ XMLHTTP gốc có nghĩa là trình duyệt sẽ không cung cấp MSXML.HttpRequest nhưng thay vì window.XMLHttpRequest tuân thủ các tiêu chuẩn. Mặc dù vậy, chúng tôi đã sử dụng thành công cả hai phiên bản mà không có bất kỳ sự cố nào, vì vậy tôi đoán nó phải là một số vấn đề trong mã của bạn - tôi chỉ đoán, nhưng ghim các phiên bản MSXML.HttpRequest trên DOMNodes (thông qua một eventlistener) có thể dẫn đến các tình huống như vậy.

+0

@ Peter Aron Zentai - ghim MSXML.HttpRequest trường hợp trên DOMNodes (thông qua một eventlistener) có thể dẫn đến tình huống như vậy. -> Bạn có thể vui lòng cho tôi một ví dụ cho số –

+0

$ ('# myButton') không. Bấm (function() {var xhr = createXHR(); xhr.onreadystatechange = function() {}}); <- điều này có thể giữ cho toàn bộ đáp ứng XHR trong bộ nhớ khi đối tượng xhr với phần tử reposnse được ghim thông qua một var đóng cửa sẽ chỉ nhận được gc-d là nút biến mất. –

+0

làm thế nào tôi sẽ vứt bỏ xhr sau đó và nơi sẽ là nơi tốt nhất để xử lý xhr. –

1

Về cơ bản, bạn đang làm rò rỉ các đối tượng XMLHTTPRequest, do các điểm cố định tròn giữa DOM HTML, công cụ thực thi JavaScript và đối tượng XMLHTTPRequest.

Bạn cần phải hủy các sự kiện và bỏ qua các đối tượng XMLHttp khi yêu cầu hoàn tất. (Để dereference họ đảm bảo không có đối tượng JavaScript hoặc biến tham chiếu chúng, bao gồm các bit nhỏ của kịch bản trong xử lý onClick vv.

Bật XMLHTTPRequest nguyên gốc có nghĩa là thành phần bên ngoài được lấy ra khỏi vòng lặp, do đó DOM có thể để quản lý các yêu cầu đời riêng của mình.

Xem thêm @ câu trả lời PeterAronZentai của.

+0

ví dụ nhỏ về mã thực sự sẽ giúp ích cho tôi!Cảm ơn rất nhiều –

+0

Tôi đoán bạn có một trang mở, với rất nhiều Ajax, nhưng bạn không bao giờ thực sự tải lại toàn bộ trang? – Ben

+0

có hầu như nhưng đôi khi khách hàng có thể tải lại –

2

"Enable hỗ trợ XMLHTTP mẹ đẻ” tùy chọn trong IE, gì ngạc nhiên, làm cho IE cung cấp hỗ trợ cho XMLHttpRequest. Nếu bạn không kích hoạt tính năng này, bạn sẽ chỉ có liên kết ActiveX kế thừa với thư viện MSXML trong IE.Tôi đoán bạn sử dụng một số thư viện cung cấp xử lý cross-browser cho các trường hợp hỗ trợ gốc vắng mặt (thiết lập bị tắt hoặc IE cũ hơn chỉ có giao diện cũ) hoặc dự phòng theo cách thủ công đối với MSXML. Vì ràng buộc MSXML là một giao diện người ngoài cho JavaScript, có nhiều nơi mà các đối tượng được giới thiệu từ bên ngoài có thể tạo thành tham chiếu chéo với các đối tượng gốc, không cho phép bộ thu gom rác JS hoặc ActiveX thu hồi chúng, vì chúng không giao tiếp và có thể ' t tìm các tham chiếu vòng tròn như vậy.

Giải pháp tốt nhất, theo ý kiến ​​của tôi, là khuyên người dùng IE7 luôn có tùy chọn này (thực sự không có nhược điểm đối với nó) và chỉ quên các trình duyệt cũ hơn. Nếu đây không phải là một tùy chọn nào đó, hãy thử đệ quy xóa tất cả các đối tượng MSXML bạn tạo trong mã dự phòng của bạn.

+0

Xây dựng giải pháp về cài đặt Nâng cao trong IE không hoạt động. Không ai có thể chuyển sang bất cứ thứ gì ngay cả khi bạn đề xuất ... –

+0

Thông thường, không bao giờ bị tắt trong các trình duyệt cũ trừ khi một số chính sách nhóm hoang tưởng đang được sử dụng và không tồn tại trong phiên bản mới hơn. Tôi không đề nghị hoàn toàn vứt bỏ MSXML, nhưng nó thực sự là khoảng thời gian để ngừng quan tâm đến các màn trình diễn ít xuất sắc hơn. –