2011-10-06 27 views
12

Hệ thống của chúng tôi tải các tệp SVG theo chương trình vào HTML qua AJAX. Một tập tin SVG thông thường bắt đầu với:Lấy hộp xem SVG gốc qua javascript

<svg xmlns='http://www.w3.org/2000/svg' viewBox='0,0 65415,41616' xml:space='preserve' height='50.000cm' width='50.000cm' xmlns:xlink='http://www.w3.org/1999/xlink 

Nhưng kỳ lạ trong JavaScript có vẻ là không có cách nào nhận được này 'viewBox' trở lại từ SVG DOM - hoặc như là một chuỗi, hoặc như là một tập hợp các giá trị. Theo Mozilla, ví dụ, firebug báo cáo rằng nút svg có 5 trong số 6 thuộc tính chúng tôi chỉ định - cụ thể là: xmlns, xml: space, height, width và xmlns: xlink. Nhưng ViewBox bị thiếu rõ ràng trong danh sách này.

Có cách nào để truy lục giá trị này theo cách lập trình không? - nó ở đâu trong SVG DOM? (Chúng tôi không thể giới thiệu thư viện của bên thứ ba).

+0

Tôi có câu hỏi này và câu trả lời cực kỳ hữu ích đối với tôi. Sẽ thật tuyệt khi có chi tiết về lý do tại sao nó bị đóng lại. –

+0

cùng ở đây ... bỏ phiếu để mở lại. –

Trả lời

5

Bạn sẽ muốn xem giao diện SVGFitToViewBox, trong đó chỉ định thuộc tính viewBox. Giao diện cho các phần tử svg, SVGSVGElement, mở rộng giao diện đó, do đó có thể là thuộc tính bạn đang tìm kiếm.

+2

Không có giải pháp? Chỉ cần liên kết? – earl3s

35
  1. Đến http://phrogz.net/SVG/svg_in_xhtml5.xhtml
  2. Mở trình duyệt web của bạn giao diện điều khiển
  3. Loại mã:

    var svg = document.querySelector('svg'); 
    var box = svg.getAttribute('viewBox'); 
    box.split(/\s+|,/); 
    
  4. Quan sát các phản ứng rực rỡ:

    ["-350", "-250", "700", "500"] 
    
  5. Ngoài ra, gõ mã:

    var box = svg.viewBox.baseVal; 
    [ box.x, box.y, box.width, box.height ] 
    
  6. Quan sát các phản ứng rực rỡ:

    [ -350, -250, 700, 500 ] 
    

Nói cách khác: yes, bạn có thể lấy viewBox từ DOM, cả hai như là một standard DOM 2 attribute cũng như một explicit ECMASCript binding.

+1

Đó là những gì tôi đã thử ban đầu. Vì vậy, tôi chỉ thử lại lần nữa nhưng var box = svg.getAttribute ('viewBox'); cho tôi một 'không xác định' mặc dù yếu tố svg rõ ràng là nút bên phải trong trình gỡ lỗi. Các thuộc tính khác như 'chiều cao' có thể được truy xuất theo cách này chứ không phải 'khung nhìn'. Nó chỉ đơn giản là lạ. –

+0

Cách tiếp cận khác, svg.viewBox.baseVal, đưa cho tôi một hộp '0,0,0,0'. Các vấn đề của tôi có thể liên quan đến việc tải SVG thông qua Ajax –

+0

Tôi có cùng một vấn đề này, không liên quan đến Ajax. –

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