當我點擊一個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不要在這個錯誤上突破。