是否可以暂停Chrome / Opera中的svg错误

时间:2012-06-26 07:33:47

标签: javascript google-chrome svg opera

'Pause on exceptions'的工作原理类似,是否可以在创建svg元素并在其上设置无效属性时暂停?

此示例(test on jsfiddle):

circle.setAttribute('fill', 'steelblue');
circle.setAttribute('r', 'big'); // A 'big' circle is obviously wrong

会在chrome中生成以下错误,但是没有映射回生成svg的javascript调用,因此很难找到错误:

enter image description here

2 个答案:

答案 0 :(得分:2)

由于在浏览器中呈现svg的方式,这是不可能的。想象一下,svg就像XML一样,或者(HTML)。它不像代码行那样在一个步骤过程中执行。它读入渲染引擎,可快速呈现对象及其属性。在渲染过程中,引擎内部必须暂停,这会导致各种渲染问题。

参考你的例子,javascript没有对你传递给setAttribute值的内容做任何类型的检查,(我的意思是它真的不能因为不同的属性需要不同的类型),而是添加了键值配对元素对象。 (尝试记录圆形对象,之前和之后,你会看到我的意思)。稍后当您将圈子添加到DOM时,它只需要对象并按照我上面的描述进行解析。

基本上这种类型的错误处理将永远不会存在于浏览器中,因为您的示例中的代码是正确的并且正确执行,但是作为程序员,您需要确保将正确类型的值传递给setAttribute方法。所以它不是javascript中的错误,这就是为什么你不在那里得到断点。

答案 1 :(得分:1)

您可以创建一个进行类型检查的包装器。阅读SVG spec以确定每个元素属性允许的值。