It also makes it slightly more equitable, since employees are no longer reliant on playing salary poker in order to determine their pay rate. This tends to reduce the salary gap.
I don't like the negotiation game either, but I don't really see how to avoid it.
I don't count bonuses as part of compensation when I am considering jobs. I've been burned too often by the promises of a bonus.
I also discount 401K matches that don't immediately vest. The longer they take to vest, the less I count them.
I also don't negotiate for raises. Either they keep up with market rates or I look for another job.
Just me but I'd rather know salary up front and not spend an entire interview just to be low-balled. Wastes everyone's time.
Neglecting to publish a salary range seems more like a negotiation tactic on behalf of companies of not wanting to be the first to name a number. Either that or you know your company can't compete on salary, which is my typical assumption when it's a company I've never heard of and I don't see a range provided.