window.location.protocol=='file:'
будет указывать на локальную страницу, но это может быть локальная
HTML-страница или местный hta.
Я думаю, window.external
может быть различным в каждом контексте.
Таким образом, создание и открытие a.htm
и a.hta
, содержащее:
<script>document.write(window.external)</script>
Получаем:
- IE:
[object]
- FireFox:
[xpconnect wrapped (nsISupports, nsISidebar, nsISidebarExternal, nsIClassInfo)]
- Хром:
[object Object]
- HTA:
null
Итак, isHTA=(window.external==null)
будет указывать на контекст HTA.
или isHTA=false;try{isHTA=(window.external==null)}catch(e){}
На всякий случай, поскольку я тестировал только текущие версии IE, FF и Chrome и кто знает, что будут делать другие браузеры.