tôi có mã như thế này, sử dụng jQuery-svgSự kiện tải trọng SVG được gọi là quá sớm?
function replaceRaster(){
$('#png').remove()
a = $('#graphic')
b = a.svg(a)
a.load('IDC_Energy.svg',
{onLoad:bind})
svg = document.getElementById("graphic").children[0]
console.log(svg)
svg.addEventListener('load', bind)
}
Các xử lý sự kiện, bind
, bị sa thải trước khi jQuery-svg-dom có thể chọn các yếu tố trong dữ liệu SVG. Mã của tôi có nghĩa vụ phải xem qua SVG và gán các lớp khác nhau và đính kèm các trình nghe vào các phần tử khác nhau, nhưng nó không thể tìm thấy bất kỳ phần tử nào. Nếu tôi gọi bind
trong bảng điều khiển sau khi mọi thứ được tải, nó có thể tìm thấy alll các phần tử SVG.
Tôi có làm gì sai không? Có cách nào khác để phát hiện khi DOM SVG có sẵn không? Tôi đã nghĩ đến việc sử dụng một bộ đếm thời gian, nhưng đó là thực sự hacky, đặc biệt là xem xét các tập tin SVG của tôi có thể là một vài MB lớn.
Trang đang tải dữ liệu SVG không đồng bộ, có. Tôi đã kết thúc bằng cách sử dụng một vòng lặp để kiểm tra xem các nội dung đã sẵn sàng mỗi 50ms hoặc một cái gì đó (quên bây giờ). –