2016-11-09 97 views
2

上有沒有一種方法,使mousemove事件處理工作在一個HTML <對象>標籤?我有HTML這樣的:鼠標移動不靈對象元素

<object type="image/svg+xml" data="myfile.svg"></object> 
<img src="myfile.svg"/> 

和一些JavaScript/jQuery的是這樣的:

$("img, object").on("mousemove", function() { 
    $("body").css("background-color","#f0f"); 
}); 
$("img, object").on("mouseleave", function() { 
    $("body").css("background-color","transparent"); 
}) 

mousemove只工作在img標籤。對objectobject *應用pointer-events: all似乎沒有幫助。

這裏是一個fiddle

$("img, object").on("mousemove", function() { 
 
    $("body").css("background-color","#f0f"); 
 
}); 
 

 
$("img, object").on("mouseleave", function() { 
 
    $("body").css("background-color","transparent"); 
 
})
img, object { 
 
    width: 100px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Mouse over the images to change the background color. It doesn't seem to work for the object tag. 
 

 
<h2>SVG as &lt;object&gt;</h2> 
 

 
<object type="image/svg+xml" data="https://upload.wikimedia.org/wikipedia/commons/e/ea/Converted_to_SVG.svg"></object> 
 

 
<h2>SVG as &lt;img&gt;</h2> 
 

 
<img src="https://upload.wikimedia.org/wikipedia/commons/e/ea/Converted_to_SVG.svg"/>

+0

如果您選擇在SVG的XML元素和應用mousemove事件處理程序會發生什麼?或添加一個屬性onmousemove =「console.log('foo')」? – Tschallacka

+0

你不能。檢查SVG,你會發現''標籤實際上創建了一個新的文檔來渲染SVG。行爲有點像iframe一些擴展。 – GillesC

+0

您是否嘗試過使用'onmouseenter'?或者當鼠標移動時你想要做什麼? – Tschallacka

回答

2

您是否嘗試過使用onmouseenter?或者當鼠標移動時你想要做什麼?

如果是的話,我建議你換對象變成一個內聯DIV,並監聽器添加到div,並設置指針事件無法比擬的對象。

請參見下面的例子:

$("img, .objectwrap").on("mousemove", function() { 
 
    $("body").css("background-color","#f0f"); 
 
}); 
 

 
$("img, .objectwrap").on("mouseleave", function() { 
 
    $("body").css("background-color","transparent"); 
 
})
img, object { 
 
    width: 100px; 
 
} 
 
object { 
 
    pointer-events:none; 
 
    } 
 
.objectwrap { 
 
    display:inline-block; 
 
    background-color:red; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Mouse over the images to change the background color. It doesn't seem to work for the object tag. 
 

 
<h2>SVG as &lt;object&gt;</h2> 
 

 
<div class="objectwrap"> 
 
<object type="image/svg+xml" data="https://upload.wikimedia.org/wikipedia/commons/e/ea/Converted_to_SVG.svg"></object> 
 
</div> 
 
<h2>SVG as &lt;img&gt;</h2> 
 

 
<img src="https://upload.wikimedia.org/wikipedia/commons/e/ea/Converted_to_SVG.svg"/>