2009-07-04 26 views
8

Tôi nhận được lỗi này alt text http://img239.imageshack.us/img239/6936/jserror.png khi tải bản đồ.Javascript "lỗi không xác định" trong các Lớp Mở

Lỗi này là trong bản gốc, OpenLayers.js chưa sửa đổi tập tin trên dòng này:

return!!(document.namespaces);

Tôi đã cố gắng viết lại nó để:

return (typeof(document.namespaces) != 'undefined');

và nó làm việc nhưng sau đó Tôi nhận được các lỗi "không xác định" giống nhau trên các giới thiệu khác cho document.namespaces:

if(!document.namespaces.olv){document.namespaces.add("olv",this.xmlns); ...

Tôi đã cố gắng viết lại này để:

if(typeof(document.namespaces.olv) == 'undefined') { ...

nhưng tôi nhận được cùng một "lỗi không xác định".

Tôi chỉ gặp lỗi này trên Internet Explorer (tôi đã thử nghiệm trên 7) chứ không phải trong Firefox.

Bất kỳ manh mối nào?

Cảm ơn.

Trả lời

6

Tôi đã tìm thấy giải pháp.

Vấn đề là tôi đã tạo ra bản đồ khi DOM đã sẵn sàng với Jquery:

$(document).ready(function(){ ... //create map here [WRONG] 

Tất cả bạn phải làm là để tạo ra các bản đồ sau sự kiện onload:

window.onload = function() { ... // create map here [CORRECT] 
+2

ghi đè tất cả các sự kiện .onload với bạn là khó có một điều tốt để làm – Art

+0

Chúng tôi đã có vấn đề trong Firefox với windows.onload, vì vậy chọn thay thế cho $ (window) .bind ("load", function() { – eclipse31

0

Vấn đề với Internet Explorer là khi trang truy cập tài liệu sẵn sàng hoặc tải trên cửa sổ, trình duyệt M $ đó không thể xác định kích thước của canvas bản đồ. Nếu bạn muốn làm việc này, bạn cũng có thể xem xét việc thiết bản đồ kích thước div của bạn:

<div id="map" style="width:250px;height:250px"></div> 
+0

Cảm ơn, bạn đã lưu mông! Tôi chỉ cần đặt rõ ràng chiều cao chứ không phải chiều rộng, YMMV. –

7

Vấn đề thực sự là document.namespaces chưa sẵn sàng trong IE8 đôi khi gây ra $ (document) .ready (vì VML)

Bạn có thể sử dụng thay vì:

jQuery(window).load(function() {} ...); 
Các vấn đề liên quan