SVG嵌入HTML,拖放代码问题
我有一个嵌入到 HTML 文档中的 SVG 文件。我可以使用 ids 和类通过 javascript 访问 html 和 svg 中的元素。但是,我想对嵌入的 svg 执行一些拖放操作。我一直在 http://svg-whiz.com/svg/DragAndDrop.svg 使用以下示例 将 SVG 与 javascript 分开,但是当我将 SVG 嵌入 HTML 中时,它给我带来了麻烦。 SVG 中的 init 函数在嵌入时不起作用
onload="initSVG(evt)"
我需要访问 HTML 中 SVG 的根目录,以便拖放例程正常工作。独立 svg 的原始代码是这样编写的:
function initSVG(evt)
{
SVGDocument = evt.target.ownerDocument;
SVGRoot = SVGDocument.documentElement;
TrueCoords = SVGRoot.createSVGPoint();
GrabPoint = SVGRoot.createSVGPoint();
}
我的重写是这样的,以便它可以在没有 onload 事件调用的情况下运行:
function initSVG()
{
SVGRoot = document.getElementsByTagName("svg");
TrueCoords = SVGRoot.createSVGPoint();
GrabPoint = SVGRoot.createSVGPoint();
}
这给出了错误:“Object # has no method 'CreateSVGPoint'”。所以它似乎没有像对待独立的 svg 那样对待导入的 SVG。如何获取 SVGRoot?
谢谢!
PS 我知道我可能应该使用 jquery,但我想学习原始 DOM。
I have an SVG file embedded into an HTML document inside . I can javascript access the elements in the html and svg using ids and classes. However, I want to perform some drag and drop on the embedded svg. I have been using the following example at http://svg-whiz.com/svg/DragAndDrop.svg separating the SVG from the javascript, but it gives me trouble when I embed the SVG in HTML. The init function in the SVG doesn't work when embedded
onload="initSVG(evt)"
I need to access the root of the SVG in the HTML so that I can get the drag and drop routines working. The original code for a standalone svg is written thus:
function initSVG(evt)
{
SVGDocument = evt.target.ownerDocument;
SVGRoot = SVGDocument.documentElement;
TrueCoords = SVGRoot.createSVGPoint();
GrabPoint = SVGRoot.createSVGPoint();
}
My rewrite is like such, so that it can be run without an onload event call:
function initSVG()
{
SVGRoot = document.getElementsByTagName("svg");
TrueCoords = SVGRoot.createSVGPoint();
GrabPoint = SVGRoot.createSVGPoint();
}
Which gives the the error: "Object # has no method 'CreateSVGPoint'". So it doesn't seem to be treating the imported SVG in the same way as a stand alone svg. How can I get the SVGRoot?
Thanks!
P.S. I know i should probably be using jquery, but I wanted to learn raw DOM.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
getElementsByTagName
函数返回一个NodeList
,而不是一个元素。尝试:The
getElementsByTagName
function returns aNodeList
, not an element. Try: