JavaScript访问SVG内部DOM
JavaScript访问SVG内部DOM,javascript,dom,svg,Javascript,Dom,Svg,test.php是一个用php生成的SVG对象 <object data="test.php" type="image/svg+xml" id="SVG" /> <script> var mySVG = document.getElementById("SVG"); var svgDoc = mySVG.contentDocument; var mySVG=document.getElementById(“SVG”); var svgDoc=mySVG
test.php
是一个用php生成的SVG对象
<object data="test.php" type="image/svg+xml" id="SVG" />
<script>
var mySVG = document.getElementById("SVG");
var svgDoc = mySVG.contentDocument;
var mySVG=document.getElementById(“SVG”);
var svgDoc=mySVG.contentDocument;
svgDoc
为空。(因此我无法通过JS访问svg的元素)它应该可以工作,看看我做错了什么?如何获取SVG的contentDocument
?您需要等待SVG加载后才能访问contentDocument:
var mySVG = document.getElementById("SVG");
var svgDoc;
mySVG.addEventListener("load",function() {
svgDoc = mySVG.contentDocument;
alert("SVG contentDocument Loaded!");
}, false);
我不确定这是不是一个答案,但它对我很有效。 我有同样的问题,并且
svgObject
返回null
:
var svgObject=document.getElementById('svgObject').contentDocument代码>
然后我意识到我正在本地运行我的html页面:file:///C:/wwwroot/App_dev/OverLay/Overlay03.html
从服务器上运行它:
它工作得非常完美,svgObject
返回了它的内容,然后我就可以在它里面得到div
。在实际的标记中
是否在
之后?您注意到了吗,在参考答案中,脚本是在SVG上的load
事件触发之后执行的?也许这就是你的问题。是的,是的。我已经犯了那个错误……我还发现(除了上面提到的),当我试图通过类似这样的方式访问svg时,它返回了null:data=“../otherdir/images/mysvg.svg”
(至少在本地,目前无法在线测试),尽管data=“images/mysvg.svg”
对我不起作用,谢谢你的提示。这也咬了我python3-mhttp.server
救命!就是这样!这标志着数小时调试的结束,谢谢!非常感谢。这在Firefox上也对我有点影响。要设置端口,请执行类似于python-mhttp.server8001的操作