2015-05-16 63 views
2

當我點擊一個SVG元素時,我在Chrome上遇到錯誤,但在Firefox上沒有。由於SVGAnimatedString導致的Chrome和TypeError

如果我使用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中斷調試。

有趣的是,直到兩天前(5月14日)我纔看到這個問題,而且我一直在開發這樣的代碼幾年。我在Mac上使用Chrome 42,我試過使用Chrome 40.0.2214.91(64位),但現在我得到了同樣的錯誤(是的,我禁用了Chrome自動更新:-)我沒有看到問題Firefox(帶或不帶調試器)。

另一個有趣的發現是,如果我從文件加載上述html而不是通過服務器加載(file://),則不會發生該錯誤。

我試圖通過向SVGAnimatedString(或其原型)添加indexOf()來繞過它,但這是本機代碼,它不起作用。

將onmousedown添加到svg元素並沒有幫助,因爲異常發生在我的函數被調用之前。

我現在需要的是告訴Chrome不要在這個錯誤上突破。

回答

11

原來這個問題是由於谷歌的翻譯擴展。禁用它可以解決問題。