Apparently there is still some controversy. The standard story is this; a flight of torpedo bombers approached the Japanese task force, and was massacred by Japanese combat air patrol. That CAP was then in poor position to fend off an attack made shortly thereafter by USN dive bombers, with the result that Akagi, Kaga, and Soryu were damaged beyond repair. Steeljaw at the USNI blog, however, has been in contact with a retired dive bomber pilot who claims that this story isn’t true. The dive and torpedo attacks did not take place is such quick succession that the absence of CAP can be pinned on the sacrifice of the torpedo bombers. The story, developed later, was in order to cover up what was a straightforward military blunder.
Take a look; it’s interesting reading.