Basically the documentation is misleading on this. I think it's working the way it's intended, but it may be confusing.
ischan will return true if the channel window is open, regardless of connection or joined status.
If you want to check whether you are actually in the channel, you should instead use: if ($me ison #channel)