Tôi có một trang web có vấn đề chỉ với IE8:
Mã này là:
var w = window.open(urlstring, wname, wfeatures, 'false');
Lỗi là:
Tin nhắn: Đố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 sau của IE8, điều này được coi là chính xác.
Tôi đã kiểm tra tất cả các tham số đến trong cuộc gọi bằng cách hủy thông 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 sẽ được gói trong 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 vấn đề, trong chế độ tương thích của IE8.
var w = (window.open(urlstring, wname, wfeatures, false));
Tôi đã có cùng một vấn đề, và bài viết của David là câu trả lời tốt nhất. Cảm ơn bạn cho bài viết của bạn và giúp đỡ của David.
– Bùi Hải Anh 09:29:00 23/09/2010