One thing I would try is to
Change:
on(layer, "click", function(evt) {})
To:
layer.on("click", function(evt) {});
Based om dojo/on document, on(layer, "click", ...) is applied to dom elements, which means it considers layer as a dom element instead of an esri/layers/FeatureLayer. Use layer.on("click", ...) to define the callback function for FeatureLayer.onClick event.