2009-08-14 46 views
10

Điều này thực sự khiến tôi khó hiểu, vì mã trông hoàn toàn vô hại.Lỗi Javascript trong IE8: Không được triển khai

IE8 ngừng thực hiện kịch bản với một thông điệp:

Chưa được triển khai. dòng map.js: 66 char: 5

Dưới đây là một ảnh từ mã:

63 if(data.map[x] !== undefined && data.map[x][y] !== undefined) { 
64    
65 left = (x - data.dim.x_min)*32 + 30; 
66 top = (data.dim.y_max - y)*32 + 30; 
67 
68 /* do stuff */ 
XX } 

thông tin gỡ lỗi: x: 263 data.dim.x_min: 263 y: 172 data.dim. y_max: 174

Dữ liệu là đối tượng được trả về từ cuộc gọi Ajax của JQuery. Điều này làm việc trong Firefox 3.0 và 3.5, safari 4.0.2 và tôi chỉ tìm thấy lỗi này khi xem trang trong IE8. Buộc IE8 vào chế độ IE7 không làm cho lỗi biến mất.

Tôi không có IE7 để gỡ lỗi, nhưng tôi có một người thử nghiệm nói rằng nó không hoạt động trong IE7.

+0

Có vẻ như ... Tôi cũng muốn biết tại sao điều này không hiệu quả. Bạn có thể gỡ rối từng bước không? –

Trả lời

20

Biến 'đầu' được sử dụng trong mã là đối tượng kiểu DispHTMLWindow2 (đối tượng cửa sổ ngoài cùng) và đã được trình duyệt sử dụng và điều đó gây ra xung đột, vì đối tượng đó không thể là đích của thao tác gán. Có vẻ như Firefox và Safari bỏ qua điều này, trong khi IE không cho phép các tập lệnh ghi đè lên điều này.

Giải pháp cho việc này:

1) Khai báo đầu bạn đang sử dụng làm biến cục bộ để xác định phạm vi sử dụng của nó.

2) Đổi tên biến thành thứ không xung đột với toàn cầu được xác định trước này.

Description of other variable names you shouldn't use

+4

Thông báo lỗi hữu ích nhất kể từ khi "Hoạt động bị hủy bỏ" – Triptych

+0

Giải pháp 1 đã làm việc cho tôi. Cảm ơn – user427969

2

IE 8 có trình gỡ lỗi javascript tuyệt vời. Bạn có thể muốn thêm một điểm dừng ở đâu đó trước lỗi và bước qua mã để xem có gì lạ với dữ liệu không. IE8 là cầu kỳ với dấu phẩy sau trong danh sách có thể là lý do tại sao bạn chỉ nhận được lỗi trong đó. Bạn có thể kéo trình gỡ lỗi lên bằng F12, nhấp vào Tập lệnh và chọn bắt đầu gỡ lỗi. Bạn có thể thêm điểm ngắt bằng cách nhấp vào lề có số dòng.

+0

Nhận xét F12 rất tiện dụng với tôi. Tôi đã tự hỏi làm thế nào để có được một cái gì đó trong IE có chức năng như Firebug, nếu chỉ có những điều cơ bản. – Belrog

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