原型上的事件监听器

时间:2017-01-04 01:41:56

标签: javascript javascript-events prototype

我知道这不起作用:

SVGPathElement.prototype.onmouseover=function(){
alert("info");
}

我想将事件监听器添加到元素的原型中,所以每次创建这样的元素时它都会自动获得这个事件监听器。我怎么能用上面的原型来做呢?

1 个答案:

答案 0 :(得分:0)

您需要使用事件委派

procedure TfrmWines.AutoSetDataChange(Sender: TObject; Field: TField);
var
  Fld: TField;
  JPG: TJPEGImage;
  strm: TStream;
begin
  Fld := wdatamod.mywines.FieldByName('winelabel');
  if TBlobField(Fld).BlobSize > 0 then
  begin
    JPG := TJPEGImage.Create;
    try
      strm := Fld.DataSet.CreateBlobStream(Fld, bmRead);
      try
        JPG.LoadFromStream(strm);
      finally
        strm.Free;
      end;
      Image1.Picture.Assign(JPG);
    finally
      JPG.Free;
    end;
  end else
  begin
    Image1.Picture.LoadFromFile('q:\sourcecode\mycellar\images\blk_wht_glass.jpg');
  end;
end;

您可以将mouseover事件处理程序附加到document.getElementsByTagName("body")[0].addEventListener("mouseover", function(e) { if(e.target && e.target.nodeName === "path") { console.log("SVG Path element clicked); } }); 元素,并在节点名称是您要查找的节点名称时调用逻辑。