Estoy trabajando en una herramienta web que te permite cambiar los atributos de los elementos SVG. Actualmente estoy tratando de dar al usuario comentarios sobre atributos o valores no válidos.
Al llamar a setAttribute (o setAttributeNS) en un elemento SVG con un valor inesperado, se produce un error de javascript. Traté de detectar esto usando try/catch o window.onerror, pero no pude encontrar la manera de hacerlo.
Código de ejemplo:
<svg id="svg" width="300" height="100"> <linearGradient id="gradient" x1="10" y1="10" x2="100" y2="100"> <stop offset="0" stop-color="#000000"></stop> <stop offset="1" stop-color="#969695"></stop> </linearGradient> </svg> try { document.querySelector('#gradient').setAttribute('x1', 'This error is not catchable'); } catch (error) { console.log('never triggered'); }https://jsfiddle.net/wr3tne2y/
probado en Chromium v91 y firefox:
Deberá verificar el valor antes de configurarlo.
let val = 'This error is not catchable'; if (!isNaN(parseInt(val, 10))) { document.querySelector('#gradient').setAttribute('x1', val); } else { console.log('ERROR!'); }