我想訪問一個SVG文件的DOM(我們稱之爲/img/my_image.svg
)。我知道兩種方法來實現這一目標:在Javascript中訪問SVG DOM:object tag vs XMLSerializer?
1.通過object
標籤
<object id="my_image" data="/img/my_image.svg" type="image/svg+xml" style="height: 100%">
Image can't be displayed
</object>
JS代碼:
$('#my_image').on('load', function() {
$(this.contentDocument).find('whatever').doWhatever();
});
2.通過XMLSerializer
<div id="my_image"></div>
JS代碼:
$.get("/img/my_image.svg", function (data) {
$('#my_image').html(new XMLSerializer().serializeToString(data.documentElement));
$('#my_image').find('whatever').doWhatever();
});
問題:
- 是這些方法中的一個明顯更好?或者這是一個偏好問題?
- 在哪種情況下我應該選擇其中一種?
這將是一個偏好問題。第一種情況你會避免使用瀏覽器爲你保存代碼行和不必要的複雜性的ajax代碼。你可以使用第二種情況,如果你想延遲加載svg,通過點播請求來節省內存和網絡。 – Nirus