gpt4 book ai didi

javascript - 使用 javascript 以编程方式创建 SVG 图像元素

转载 作者:IT王子 更新时间:2023-10-29 03:21:59 25 4
gpt4 key购买 nike

正如我的标题所说,我正在尝试使用 javascript 在 HTML 页面中以编程方式创建 SVG 图像元素。出于某种原因,我的基本 javascript 代码无法正常工作,但是如果我使用 raphaeljs 库,它就可以正常工作。所以我的 js 显然有问题 - 我似乎无法弄清楚它是什么。

(注:目标浏览器为FF4+)

这是基本页面,其中包含我试图在顶部实现的 html 版本:

<html>
<head>
<script type="text/javascript" src="http://raphaeljs.com/raphael.js"></script>
</head>
<body>

<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
id="test1"
height="200px"
width="200px">
<image
id="testimg1"
xlink:href="http://i.imgur.com/LQIsf.jpg"
width="100"
height="100"
x="0"
y="0"/>
</svg>

<hr />

<p id="testP1">


</p>
<hr />
<p id="testP2">


</p>
</body>
</html>

这是我的 javascript:

var paper = Raphael(document.getElementById("testP1"), 200, 200);
paper.image("http://i.imgur.com/LQIsf.jpg", 0,0, 100, 100);



var svg = document.createElementNS('http://www.w3.org/2000/svg','svg');
svg.setAttributeNS('http://www.w3.org/2000/svg','xlink','http://www.w3.org/1999/xlink');
svg.setAttributeNS('http://www.w3.org/2000/svg','height','200');
svg.setAttributeNS('http://www.w3.org/2000/svg','width','200');
svg.setAttributeNS('http://www.w3.org/2000/svg','id','test2');

var svgimg = document.createElementNS('http://www.w3.org/2000/svg','image');
svgimg.setAttributeNS('http://www.w3.org/2000/svg','height','100');
svgimg.setAttributeNS('http://www.w3.org/2000/svg','width','100');
svgimg.setAttributeNS('http://www.w3.org/2000/svg','id','testimg2');
svgimg.setAttributeNS('http://www.w3.org/1999/xlink','href','http://i.imgur.com/LQIsf.jpg');
svgimg.setAttributeNS('http://www.w3.org/2000/svg','x','0');
svgimg.setAttributeNS('http://www.w3.org/2000/svg','y','0');

svg.appendChild(svgimg);

document.querySelector('#testP2').appendChild(svg);

实例:http://jsfiddle.net/Yansky/UVFBj/5/

最佳答案

SVG 原生属性(不包括 xlink:href)不共享 SVG 命名空间;您可以只使用 setAttribute 而不是 setAttributeNS,或者使用

svgimg.setAttributeNS(null,'x','0');

例如。

在这里,工作:http://jsfiddle.net/UVFBj/8/

请注意,我更改了您的 fiddle 以正确使用 XHTML,以便 SVG 在所有主流浏览器中都能很好地工作。

关于javascript - 使用 javascript 以编程方式创建 SVG 图像元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6701705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com