Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript访问SVG内部DOM_Javascript_Dom_Svg - Fatal编程技术网

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的操作