2011-08-07 33 views
9

Tôi đang thực hiện cuộc gọi AJAX POST để nhận một số HTML. Tôi lấy HTML đó và tiêm nó vào DOM. Tất cả mọi thứ hoạt động tốt và dandy trong mọi trình duyệt ngoại trừ IE < = 8. Có vẻ như IE đang phân tích cú pháp HTML đến từ khi tôi đăng nhập vào console/cảnh báo, thẻ ở dạng thủ đô.IE <= 8 xóa <form> thẻ khi nhận được từ AJAX

Dòng nó loại bỏ:

<form class="uniForm" enctype="multipart/form-data" action="/profile/editprofile/" method="post"> 

Rất kỳ lạ vì thẻ cuối cùng là có nhưng thẻ bắt đầu thì không. Cuộc gọi là một jQuery POST chuẩn ($ .post()).

UPDATE:

Đã kết thúc từ bỏ và đưa nó vào một textarea nhúng và reinjecting vào DOM:

<!--[if lt IE 9]> 
<textarea class="ieHackTextArea"> 
<!--[if lt IE 9]> 
<![endif]--> 

... ở một nơi khác ...

if ($.browser.msie && parseFloat($.browser.version) < 9) { 
    ui.panel.innerHTML = $(".ieHackTextArea").val(); // jQuery injection doesn't work 
} 
+0

hạn chế quyền truy cập vào IE7 trình duyệt: p – genesis

+0

Chỉ có IE này hoạt động trong IE 9! IE 7 không hoạt động. – brandon

Trả lời

1

Bạn có thể thử bọc tất cả biểu mẫu vào một số <div> để xem điều đó có hoạt động tốt hơn không.

Tôi gặp vấn đề tương tự với đối tượng <input> và đó là giải pháp của tôi để đảm bảo rằng nó sẽ hoạt động tốt trong IE8.

12

Tôi chạy vào cùng một vấn đề chính xác ngày hôm nay và cố gắng sửa chữa nó bằng cách chèn một trống <pre></pre> ngay trước khi <form>, mà bằng cách nào đó dừng IE8 (chưa được thử nghiệm trong các phiên bản khác) từ tháo <form>.

+2

Đã chiến đấu với điều này cả ngày, đã có một trường hợp trước đó gói nó trong một div làm việc nhưng lần này nó không, đặt một sản phẩm nào trước khi nó làm việc một điều trị thời gian này, cảm ơn bạn rất nhiều! –

+0

Tôi không thể tin điều này thực sự hiệu quả. Tôi bị sốc. IE9 –

0

Tôi có cùng một kịch bản giống nhau và cùng một vấn đề với một chút vướng mắc. Tôi nhận được thẻ input type = hidden, bị xóa cũng như thẻ biểu mẫu. Tôi không tìm thấy lý do tại sao điều này xảy ra. Có ai tìm thấy bất cứ điều gì mới về vấn đề này kể từ tháng 8 năm ngoái không?

Ngoài ra tôi đã thử gói biểu mẫu trong thẻ div và không có gì thay đổi. Nếu tôi viết một số văn bản hoặc $ nbsp; trên một dòng phía trên thẻ biểu mẫu, biểu mẫu sẽ hiển thị.

Tôi cũng có thể xác nhận rằng sự cố này cũng có trong IE7 (nếu nó quan trọng).

0

Giải pháp nhanh chóng và đơn giản, chỉ cần xóa dấu gạch chéo cuối cùng từ thuộc tính action = "" (chỉ trong URL) của thẻ biểu mẫu.

Ví dụ:

SAI (IE)

<form action="http://mywebsite.com/something/"> 
</form> 

ĐÚNG

<form action="http://mywebsite.com/something"> 
</form> 

Chỉ loại bỏ các dấu gạch chéo ở cuối hình thức hành động = "".

0

sử dụng navigator.userAgent bên trong trình xử lý javascript của bạn để xác định trình duyệt và áp dụng logic suiatble. Nó là straightfoward so sánh với "CSS hack". Bạn có thể tham khảo ở đây http://www.useragentstring.com/pages/Internet%20Explorer/

Các UserAgent của IE sẽ rất có thể mang Chuỗi MSIE (Miscrosoft internextExplorer lẽ: D)

Về cơ bản:

if(navigator.userAgent.indexOf('MSIE 7.0') > -1){ 
 
    /* Do watever suitable for IE7 here */ 
 
}else if(navigator.userAgent.indexOf('MSIE 8.0') >-1){ 
 
    /* Do watever suitable for IE8 here */ 
 
}else{ 
 
    /* The rest... */ 
 
}

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