Javascript 获取svg元素';id';动态属性(Google SVG web)

Javascript 获取svg元素';id';动态属性(Google SVG web),javascript,svg,addeventlistener,Javascript,Svg,Addeventlistener,(使用) window.onsvgload=function(){ 函数onEnter(e){ var targ; 如果(!e)var e=window.event; 如果(e.target)target=e.target; 如果(e.src元素)target=e.src元素,则为else; if(target.nodeType==3)//击败Safari bug target=target.parentNode; 警报(target.hasAttributeNS(null,'id');//显示

(使用)

window.onsvgload=function(){
函数onEnter(e){
var targ;
如果(!e)var e=window.event;
如果(e.target)target=e.target;
如果(e.src元素)target=e.src元素,则为else;
if(target.nodeType==3)//击败Safari bug
target=target.parentNode;
警报(target.hasAttributeNS(null,'id');//显示false
警报(target.getAttributeNS(null,'id'));//显示一个空白对话框
警报(target.id);//显示一个空白对话框
}
/*很少看到SVG中的group元素*/
document.getElementById('很少看到').addEventListener(“mouseover”,onEnter,false);//警报为空
document.getElementById('normal_dom_element')。addEventListener(“mouseover”,onEnter,false);//警报按预期显示id
}
事件侦听适用于SVG元素。我似乎无法获取id。我可以获取其他对象属性,如x,y值。是否要获取目标元素的ID?

可能

e.currentTarget
但是对于jQuery,它很简单

window.onsvgload = function() {
  $('#Seldom_Seen').mouseover(function(){ onEnter(this); });
  $('#normal_dom_element').mouseover(function(){ onEnter(this); });
}

function onEnter(obj) {
  alert($(obj).attr("id"));
}

你很可能会得到比你预期的更多的目标。“罕见”元素中的所有元素都有id吗?您可以随时提醒目标查看它是什么类型的元素


元素上的mouseover/mouseout也存在一些问题,事件会冒泡,除非进行一些过滤,否则您可能会得到两次。有关可能的解决方法,请参阅。

很有趣。我不太确定如何进行“过滤”。调用e.currentTarget.id对我来说很有效。但是我想知道事件冒泡是否仍然会导致一些问题。如果在“g”中有多个元素,您希望在其中捕获事件,但同时也在“g”中捕获事件,那么您可能需要担心这一点。否则你应该准备好了。
window.onsvgload = function() {
  $('#Seldom_Seen').mouseover(function(){ onEnter(this); });
  $('#normal_dom_element').mouseover(function(){ onEnter(this); });
}

function onEnter(obj) {
  alert($(obj).attr("id"));
}