2010-02-21 24 views
6

Tôi đang bối rối.Tại sao SVG không hoạt động trên các tệp HTML cục bộ?

Nếu tôi chỉ bởi trình duyệt (Chrome hoặc Safari trên OSX) để trang web này, nó cho thấy tất cả các SVG hoàn hảo:

http://emacsformacosx.com/

Bây giờ, nếu tôi xem nguồn trên trang đó, sao chép nó, và dán nó vào một tài liệu HTML mới trên máy tính để bàn của tôi, sau đó xem với một trong hai trình duyệt, tôi không nhận được SVG nào cả.

Tại sao lại có sự khác biệt?

Tại sao SVG hoạt động trên trang web, nhưng không phải trong tệp HTML cục bộ?

Cảm ơn!

Trả lời

8

Bạn đã đổi tên nó sang HTML, và trình duyệt giả nội dung html .. trong khi trang được text/xml ..

nếu bạn đổi tên nó để .xml và mở nó, bạn sẽ thấy nó chỉ tốt ..

+0

Đã xác nhận. Đã sao chép và sửa lỗi bằng phương pháp này trên Mac OS X 10.6.2 – pestilence669

+0

Thú vị. Tất cả các tài liệu HTML5 có phần mở rộng .xml hay đây chỉ là chức năng có SVG trong tài liệu? – Axeva

+0

Tôi chỉ đùa một chút và có vẻ như cả FF và Chrome cũng hiển thị chính xác với phần mở rộng '.xhtml' ... Có vẻ như chúng không chấp nhận định nghĩa nội dung từ bên trong tệp (ví dụ: thẻ meta ..), nhưng nó có vẻ là trường hợp .. –

4

các thông tin tiêu đề HTTP response làm cho trình duyệt để giải thích các thông tin như XML:

HTTP/1.1 200 OK 
Date: Sun, 21 Feb 2010 02:32:02 GMT 
Server: Apache/2.2.14 (Debian) 
Vary: Accept-Encoding 
Transfer-Encoding: chunked 
Content-Type: text/xml; charset=UTF-8 

Bạn thấy đấy, các máy chủ phục vụ lên trang là đủ thông minh để phát hiện rằng đây là một tài liệu XML, và nói với các trình duyệt. Khi bạn tải tệp từ đĩa, trình duyệt của bạn có thể không đủ thông minh để thực hiện việc này và có xu hướng dựa vào phần mở rộng của tệp để cung cấp thông tin này.

Bạn có thể thử chèn đoạn mã sau vào các yếu tố <head>:

<meta http-equiv="Content-Type" content="text/xml; charset=UTF-8" /> 

Bạn thấy những gì tôi đã làm ở đó? Nó chỉ là một tấm gương của tiêu đề phản hồi HTTP có thể đã chỉ định loại tài liệu và mã hóa.

Mục đích của thẻ này là làm cho trình duyệt nghĩ, "Này, máy chủ nói với tôi rằng tài liệu này là HTML, nhưng tài liệu cho tôi biết đó là XML. Tài liệu có thể biết rõ hơn máy chủ, vì vậy tôi ' sẽ tin tưởng nó ... :: diễn giải dưới dạng XML :: "

+2

nên là trường hợp nhưng tiếc là nó không phải là .. nó sẽ vẫn không làm cho nó một cách chính xác .. –

+0

Thật không may, Gaby là đúng. Nó không hoạt động. Bạn đã đưa ra một giải pháp thanh lịch Amphetamachine, nhưng trình duyệt bỏ qua nó. Bực bội. – Axeva

+0

Trình duyệt = ngu ngốc – amphetamachine

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