Tôi có một trang web gặp sự cố chỉ IE8:
Mã là:
var w = window.open(urlstring, wname, wfeatures, 'false');
Lỗi là:
Thông báo: Đối số không hợp lệ.
Dòng: 419 Char: 5
Mã: 0
URI: http: //HOSTNAME/js_context.js
Tôi đã xác nhận số dòng của mã ("Dòng" và "URI" là chính xác) và tôi hiểu trong các phiên bản IE8 sau này, điều này được coi là chính xác.
Tôi đã kiểm tra tất cả các thông số đến trong cuộc gọi bằng cách kết xuất cảnh báo và tất cả chúng đều hợp lệ.
Vấn đề này không xảy ra trên FF (có thể là 3).
CẬP NHẬT:
Vấn đề dường như là trong việc sử dụng gán kết quả của window.open () khi thực hiện "var w". Khi tôi chia dòng thành hai câu lệnh, nó hoạt động trong IE8.
CẬP NHẬT2:
Dựa trên:
http://javascript.crockford.com/code.html
Khi một hàm được gọi ngay lập tức, toàn bộ biểu thức gọi phải được bao bọc trong các parens để rõ ràng rằng giá trị được tạo ra là kết quả của hàm chứ không phải chính hàm.
Đây không phải là chính xác những gì đang diễn ra ở đây, nhưng tôi thấy rằng việc áp dụng nguyên tắc đã giải quyết được vấn đề, trong chế độ tương thích của IE8.
var w = (window.open(urlstring, wname, wfeatures, false));