当我点击SVG元素时,我在Chrome上收到错误,但在Firefox上收不到错误。
如果我使用Chrome的调试器,它会在bubble_compiled.js(Google的文件)中出现'Uncaught TypeError:undefined is not function'。
我知道潜在的问题源于'.className返回一个SVGAnimatedString(没有indexOf方法),正确的做法是使用.classNam e.baseVal但是这个错误不再是我的代码的一部分而是它的一部分谷歌的代码。
这是一个基本的例子:
<!DOCTYPE html>
<html>
<head>
<script>
function err() { alert('err'); }
</script>
</head>
<body>
<svg style="width:200px;height:200px; background-color: #00B7FF" onerror="err()"></svg>
</body>
</html>
不幸的是,这意味着我无法调试涉及与svg元素交互的代码,因为Chrome调试器在mousedown上打破了此错误。
有趣的是,直到两天前(5月14日)我才发现这个问题并且我已经开发了这样的代码好几年了。 我在Mac上使用Chrome 42,我尝试使用Chrome 40.0.2214.91(64位),但现在我得到了同样的错误(是的,我禁用Chrome自动更新:-)我没有看到问题在Firefox(带或不带调试器)。
另一个有趣的观察是,如果我从文件而不是(file://)加载上述html而不是通过服务器,则不会发生错误。
我试图通过向SVGAnimatedString(或其原型)添加indexOf()来规避它,但这是本机代码,它不起作用。
将onmousedown添加到svg元素没有帮助,因为异常发生在我的函数被调用之前。
我现在需要的是告诉Chrome不要破坏此错误的方法。