FFおよびIEでは、SVG(SVG)ドキュメントは$(document ).ready()
が呼び出されたときに取得されます。
Chromeでは、が呼び出されたgetSVGDocument
ときに代わりにnullを返します。$(document ).ready()
(で示されているように、約7ms後に検出されるようですがsetTimeout
。)
Chromeがロードされた<embed>
SVGドキュメントを現時点で検出しないのに、 $(document ).ready()
FFとIEは検出するのはなぜですか?
setTimeout(7ms)
( Chromeが追いつくのを待つためだけに使用する必要はありません!!!それは...ラメだからです。)
以下のコードの単純なコードは、シナリオを示しています。FF +IEのRETURNSSVGDocumentChromeのRETURNSNULL(への呼び出しが7ms遅れない限りgetSVG()
!!!)。
localhost
注意:このコードはChromeを搭載したサーバーで実行する必要があります。これはChromeの別の問題です。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
getSVG = function () {
var el = document.getElementById("embedId");
SVGDoc = el.getSVGDocument();
console.log(SVGDoc); // returns null in Chrome
}
$(document).ready(function () {
getSVG();
//setTimeout("getSVG()", 7); // this works, showing that Chrome is NOT "ready"
});
</script>
</head>
<body>
<embed id="embedId" src="man.svg" type="image/svg+xml" width="50" height="50"/>
</body>
</html>