Phiên bản JavaScript được sử dụng (hoặc JScript) phụ thuộc vào ba yếu tố: phiên bản Trình khám phá được cài đặt, khai báo loại tài liệu được sử dụng (DTD) và thẻ meta x-ua-compatible
.
Mặc dù HTAs được chạy bởi mshta.exe, IE cung cấp JavaScript và công cụ hiển thị cho các ứng dụng, do đó mọi thứ đều nói về các phiên bản JS, viết tắt của các mô hình hộp, định vị, CSS vv và các phần tử API và HTML có sẵn.
Nếu bạn đã cài đặt IE11 vào hệ thống của mình, bạn có thể sử dụng phiên bản JavaScript mới nhất bằng cách sử dụng <!DOCTYPE html>
và <meta http-equiv="x-ua-compatible" content="ie=edge" />
.
Đương nhiên, đặt content
thành IE=edge
không ghi đè phiên bản cũ của IE đã cài đặt, chế độ có sẵn mới nhất được sử dụng. Thay vì edge
, bạn có thể sử dụng số phiên bản IE để hạ cấp ứng dụng khi chạy với IE mới hơn.
Bỏ qua DTD phải luôn bỏ ứng dụng để chạy ở chế độ Quirks, trong trường hợp HTA tương tự như IE5. Tuy nhiên, trong trường hợp này, chế độ tài liệu có thể được thay đổi với x-ua-compatible
, nhưng có một số mâu thuẫn ít nhất trong IE8 & 9. Luôn an toàn nhất để sử dụng DTD, nếu chế độ Quirks là không cần thiết.
Với DTD, nhưng không có x-ua-compatible
thẻ meta HTA được chạy ở chế độ chuẩn IE7 (không hỗ trợ object.defineProperty()
, được giới thiệu trong IE9).
Bạn thể đọc thêm về chủ đề này tại MSDN: Introduction to HTML Applications (HTAs)
IE info phiên bản cho JS and CSS được phổ biến tại MSDN:
JavaScript version information
CSS Compatibility in Internet Explorer
Đây một "an toàn bắt đầu "cho tệp HTA, khi bạn muốn sử dụng phiên bản mới nhất hiện có:
<!DOCTYPE html>
<html>
<head>
<title>HTA</title>
<meta http-equiv="x-ua-compatible" content="ie=edge" />
// All link, style and script tags, or any code should be placed below the five lines above
Bạn cũng có thể sử dụng ScriptEngine
chức năng để tìm ra các phiên bản mới nhất kịch bản:
ver = ScriptEngine() + ' V ';
ver += ScriptEngineMajorVersion() + '.';
ver += ScriptEngineMinorVersion() + '.';
ver += ScriptEngineBuildVersion();
alert(ver);
Thông báo, rằng đây chỉ hiển thị các phiên bản mới nhất được cung cấp bởi trình duyệt, chế độ tài liệu không có ảnh hưởng đến giá trị trả lại .
Bất cứ khi nào tôi sử dụng thẻ meta, thuộc tính ứng dụng hta: của tôi không hoạt động. Nếu tôi bình luận nó thì họ sẽ làm. Có giải pháp nào không? – ndm13
Không may là tôi không phải là giải pháp tốt cho việc này.Vì IE10, có vẻ như, nhiều thuộc tính HTA không được áp dụng nữa (Trong mã được phân tích cú pháp, thẻ 'HTA' được chuyển sang' body'). Trong IE9 họ vẫn có vẻ được tôn trọng. Tôi hầu như đã sử dụng 'IE = 9' thay vì' IE = cạnh', điều này cho phép xử lý sự kiện ít nhất hiện đại và hầu hết các thẻ HTML5, bao gồm 'svg' và' canvas'. – Teemu
'IE = 9' hoạt động hoàn hảo! Tôi hy vọng điều này là cố định tại một số điểm, nhưng nó nghi ngờ khi họ dường như được loại bỏ này ra. Tôi sẽ không ngạc nhiên nếu phiên bản tiếp theo của Windows không hỗ trợ các tệp HTA. – ndm13