Đây là known issue trong jQuery mobile. Đường vi phạm là jquery.mobile.navigation.js:913.
// Kill the keyboard.
// XXX_jblas: We need to stop crawling the entire document to kill focus. Instead,
// we should be tracking focus with a live() handler so we already have
// the element in hand at this point.
// Wrap this in a try/catch block since IE9 throw "Unspecified error" if document.activeElement
// is undefined when we are in an IFrame.
try {
$(document.activeElement || "").add("input:focus, textarea:focus, select:focus").blur();
} catch(e) {}
Có cuộc gọi tới blur()
đang gửi các cửa sổ IE tới mặt sau của chồng.
Cách giải quyết khác, bạn có thể tránh điều này bằng cách đặt các thẻ tập lệnh về mặt vật lý trong số <head>
của HTML.
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.css" />
<script src="http://code.jquery.com/jquery-1.6.2.js"></script>
<script src="http://code.jquery.com/mobile/latest/jquery.mobile.js"></script>
...
Đặt thẻ tập lệnh ở nơi khác trong tài liệu hoặc chèn chúng qua tập lệnh sẽ kích hoạt lỗi.
This Fiddle demostrates cách giải quyết đang hoạt động. Lưu ý rằng điều này chỉ hoạt động trong tài liệu cấp cao nhất . Nếu tài liệu nằm trong một số , lỗi sẽ vẫn xuất hiện. Do đó, nếu bạn mở trình soạn thảo JSFiddle trong IE 7/8, nó sẽ vẫn được gửi đến mặt sau; nhưng nếu bạn chỉ mở rendered HTML, nó sẽ không.
Tôi có thể xác nhận rằng tôi thấy điều này xảy ra trong IE 7 trên máy ảo đơn giản. Cụ thể, cửa sổ không được * thu nhỏ * - nó được gửi đến cuối ngăn xếp (thu nhỏ các cửa sổ khác và bạn sẽ thấy cửa sổ IE của bạn vẫn mở), giống như 'window.blur()' được gọi ở đâu đó. (Trên IE 9 của tôi, nó không giảm thiểu/làm mờ và cũng không đi vào chế độ tương thích.) – josh3736