Javascript Mozilla Firefox没有';t在addEventListener中加载SVG对象(';加载';

Javascript Mozilla Firefox没有';t在addEventListener中加载SVG对象(';加载';,javascript,jquery,html,svg,jquery-svg,Javascript,Jquery,Html,Svg,Jquery Svg,我不知道为什么,但它在Chrome和Safari上工作,而不是在Mozilla上。 我有加载svg文件的objecthtml标记。该文件包含.s0类。我想在您单击该类时处理事件 谁知道出了什么问题呢?sry,当我试图将代码粘贴到JSFIDLE时,它没有显示对象 <object data="jo.svg" type="image/svg+xml" id="obj"></object> 代码 $(函数(){ var a=document.getElementById('

我不知道为什么,但它在Chrome和Safari上工作,而不是在Mozilla上。 我有加载svg文件的
object
html标记。该文件包含
.s0
类。我想在您单击该类时处理事件

谁知道出了什么问题呢?sry,当我试图将代码粘贴到JSFIDLE时,它没有显示
对象

<object data="jo.svg" type="image/svg+xml" id="obj"></object>

代码

$(函数(){
var a=document.getElementById('obj');
a、 addEventListener(“加载”,函数(){
// !!!
log('在Mozilla中无法访问该行,或者在加载svg之前无法访问该行');
var svgDoc=a.contentDocument;
var els=svgDoc.queryselectoral(“.s0”);
对于(变量i=0,长度=els.length;i
主要需要决定是否使用jquery,不要将jquery代码与本机javascript代码混用

Javascript版本:

<!doctype html>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<object data="http://gbip.ru/poselki/genplan/5/full/gp.svg" type="image/svg+xml" id="obj"></object>
<script type="text/javascript">
    window.addEventListener('DOMContentLoaded', function() {
        var obj = document.getElementById('obj');
        obj.addEventListener('load', function(){
            console.log('loaded');
        });
    });
</script>
</body>
</html>

addEventListener('DOMContentLoaded',function(){
var obj=document.getElementById('obj');
obj.addEventListener('load',function(){
console.log('loaded');
});
});
Jquery版本

<!doctype html>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<object data="http://gbip.ru/poselki/genplan/5/full/gp.svg" type="image/svg+xml" id="obj"></object>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        var $obj = $('#obj');
        $obj.on('load', function () {
            console.log('loaded');
        })
    });
</script>
</body>
</html>

$(文档).ready(函数(){
var$obj=$(“#obj”);
$obj.on('load',函数(){
console.log('loaded');
})
});
Ubuntu 14.04.3 LTS,Firefox 40.0.3

最好使用
标记,而不是
。无论如何,Firefox与
配合使用效果更好。如果可以将svg代码放入标记中,那么一切都可以正常工作

您可以尝试使用
标记:

我建议您使用
标记,因为您可以用CSS和Javascript轻松控制内部的所有元素:

也许,Raphaël JS是一个很好的库。它允许使用javascript控制所有SVG元素,并在不复杂的情况下执行许多任务:

如果您可以使用Modernizr.js库就可以了,它可以帮助您检测是否有浏览器支持

 if (!Modernizr.svg) {
    $(".logo img").attr("src", "images/logo.png");
 }
包括现代化:

您可以阅读这篇有趣而完整的文章,了解如何在所有变体中使用svg:

但是,您应该在@cetver的回答中向您建议,不要将jQuery和原生js代码混用

有了所有的建议,您可以用一种简单的方式实现加载内容

祝你好运。

我用以下方法解决了这个问题:

$('#svg').load('"image/svg+xml"', function () {
    alert('svg loaded');
});

它可以在Chrome、Firefox和IE9+上运行。

谢谢您的回答。我发现了一件奇怪的事情:如果您将v2.1.4更改为v1,jquery版本中的代码可以工作吗?例如:
。我不知道为什么,但对于v1它不工作。请确认在旧版本中不工作(不知道为什么),但您可以使用本机事件:
$obj.get(0).onload=function(){console.log('OK');};
$('#svg').load('"image/svg+xml"', function () {
    alert('svg loaded');
});