Your use case: "My component should be visible if URL contains editor.html and it should be hidden when editor.html is not present."
So you have a component that you want to display when the page is:
* Being Edited in Edit mode
* Being Previewed in Preview mode
* (Or any of the other views provided by Page Editor).
The only view you don't want this component to display is when it's outside of the Page Editor, which effectively means its in "Disabled" mode (youre just looking at the rendered web page and you cannot interact with it).
I wouldn't think about this as "is it in the page editor" but rather "what are the AEM author users *doing* in AEM that dictates when this component should show/hide".
So, it certainly sounds like you could do it by wcmmode == disabled
Remember, if youre trying to do stuff like window.location.href.indexOf('/editor.html') .. you would actually have to do window.top.location.href('/editor.html') .. as i mentioned in my previous post, the page with your components/code is being loaded in an IFRAME _BY_ the editor.