3 回答

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以嘗試每隔一段時(shí)間進(jìn)行一次輪詢。
function checkReady() {
var svg = document.getElementById("chart").getSVGDocument();
if (svg == null) {
setTimeout("checkReady()", 300);
} else {
...
}
}

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
在主文檔中的嵌入元素(例如'embed','object','iframe')上,添加一個(gè)onload調(diào)用函數(shù)的屬性,或在腳本中添加事件監(jiān)聽器,例如embeddingElm.addEventListener('load', callbackFunction, false)。另一個(gè)選擇可能是聽DOMContentLoaded,具體取決于您想要聽什么。
您還可以在主文檔上添加一個(gè)加載偵聽器。jQuery(document).ready并不意味著所有資源都已加載,僅意味著文檔本身具有一個(gè)可供操作的DOM。但是請(qǐng)注意,如果您偵聽整個(gè)文檔的加載,則只有在加載該文檔中的所有資源,css,javascript等之后,才會(huì)調(diào)用回調(diào)函數(shù)。
如果您使用內(nèi)嵌svg,則jQuery(document).ready可以正常工作。
進(jìn)一步說(shuō)明,您可能需要考慮使用embeddingElm.contentDocument(如果有)而不是embeddingElm.getSVGDocument()。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用onload事件進(jìn)行檢查。
假設(shè)some.svg嵌入在對(duì)象標(biāo)簽中:
<body>
<object id="svgholder" data="some.svg" type="image/svg+xml"></object>
</body>
jQuery的
var svgholder = $('body').find("object#svgholder");
svgholder.load("image/svg+xml", function() {
alert("some svg loaded");
});
javascript
var svgholder = document.getElementById("svgholder");
svgholder.onload = function() {
alert("some svg loaded");
}
添加回答
舉報(bào)