当我点击SVG元素时,我在Chrome上收到错误,但在Firefox上收不到错误。
如果我使用Chrome的调试程序,则会在bubble_compiled.js(Google的文件)中显示' Uncaught TypeError:undefined不是函数'。
我知道根本问题源于' .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自动更新:-)我没有&#39 ;看到Firefox中的问题(有或没有调试器)。
另一个有趣的观察是,如果我从文件而不是(file://)加载上述html而不是通过服务器,则不会发生错误。
我试图通过向SVGAnimatedString(或其原型)添加indexOf()来绕过它,但这是本机代码,它不起作用。
将onmousedown添加到svg元素并没有帮助,因为在调用函数之前发生了异常。
我现在需要的是告诉Chrome不要破坏此错误的方法。
答案 0 :(得分:11)
原来这个问题是由Google的Translate扩展引起的。禁用它可以解决问题。