尝试同时解析两个SVG属性

时间:2019-07-03 16:17:50

标签: javascript jquery tampermonkey

伙计们我设法使我的代码通过const Lines完美地完成了我想做的事情。我的主要问题是我试图获取与正确的stroke值匹配的points值。如您所知,我的脚本从该URL解析了SVG,并发送了每个带有发布请求的points值。无论如何,当我得到匹配的stroke值时,我可以抓住匹配的points值吗?是否像l: (JSON.stringify(line))那样在请求中使用它?因此它将在请求中发送具有匹配的line值的strokeStroke值在发送请求时必须采用十六进制格式,就像笔画中显示的一样:示例#30f011

最终是否还可以做其他这样的属性?如果需要,可以说stroke-Width

在我的脚本中,您可以在请求中看到我添加了stroke的位置,此格式设置了奇怪的十六进制代码,并且仅获取第一个stroke值,此后没有更多值。保持不变吗?

xhr=new XMLHttpRequest();
xhr.open("GET", "http://colorillo.com/bwf7.inline.svg");
xhr.addEventListener("load", function() {
const xmlDoc = new DOMParser().parseFromString(
this.responseText.trim(),
"image/svg+xml"
);
const Lines = Array.from(xmlDoc.getElementsByTagName('polyline'), pl =>
pl.getAttribute('points').split(' ').map(pair =>
pair.split(',').map(Number)));

const styles = Array.from(xmlDoc.getElementsByTagName('polyline'), pl =>
pl.getAttribute('style').split(';'))[0];

let stroke = null;

for(let style of styles) {
let valueOffset = style.indexOf(':');
if(style.substr(0, valueOffset).trim() === 'stroke') {
    stroke = style.substr(valueOffset + 1).trim()
    break;
}
}

Lines.forEach(line => $.post("/draw.php?ing=_index", {
l: (JSON.stringify(line)),
w: ("1"),
c: (stroke), //Only seems to get the first HEX value of line. and that's it.... I need all for each matching ``line``
o: ("75"),
f: ("1"),
_: ("false")
                }));
});

xhr.send();

0 个答案:

没有答案