Короче говоря: нет. Холст - это просто пиксели.Что вам нужно, так это SVG (или VML на IE) - или лучше что-то вроде Raphaël , который позаботится об этом за вас (он использует VML на IE и SVG на всем остальном).
Теперь более длинный ответ: вы могли бы сделать это, используя холст, но тогда вам придется отслеживать все ваши объекты и формы самостоятельно и вычислять, на каком объекте щелкнули, и так далее, чтовероятно не то, что вы хотите. ОБНОВЛЕНИЕ: теперь есть библиотеки, которые могут сделать это для вас, например EaselJS , KineticJS , Paper.js , Fabric.js и некоторые другие (см. Это сравнение библиотек холста для получения дополнительной информации).
С другой стороны, используя Raphaël, вы пишете такой код:
var circle = r.circle(50, 50, 40);
circle.attr({fill: "red"});
circle.mouseover(function (event) {
this.attr({fill: "red"});
});
что, скорее всего, то, что вы хотите.Это очень естественно, если вы привыкли работать с HTML DOM и событиями.Кроме того, он намного более переносим - даже работает в IE6.