Как получить размер окна HTA? - PullRequest
2 голосов
/ 31 марта 2011

Вы можете УСТАНОВИТЬ размер окна HTA, но я не могу найти способ ПОЛУЧИТЬ его размер.

Все, что я могу думать, это читать document.body.offsetWidth и .offsetHeight, но они дают вамразмер окна просмотра не фактический размер окна.

Возможно ли это знать?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Кажется, что нет свойств или методов для получения этой информации.IE9, выпущенный сейчас в бета-версии, имеет новые свойства outterWidth и outterHeight, но на данный момент это не вариант.

Поэтому я разработал обходной путь для этого:

function addWinSizeGetterFuncs(){
   var currViewportWidth = document.body.offsetWidth ;
   var currViewportHeight = document.body.offsetHeight ;
   resizeTo(currViewportWidth,currViewportHeight) ;
   var chromeWidth = currViewportWidth-document.body.offsetWidth ;
   var chromeHeight = currViewportHeight-document.body.offsetHeight ;
   resizeTo(currViewportWidth+chromeWidth,currViewportHeight+chromeHeight) ;
   window.getWidth = new Function('return document.body.offsetWidth+'+chromeWidth) ;
   window.getHeight = new Function('return document.body.offsetHeight+'+chromeHeight) ;
}

Эта функция создает два новых метода для объекта window: window.getWidth() и window.getHeight().Они получат фактический размер окна.
Функция требует существования объекта body, поэтому ее необходимо выполнить после тега BODY.


И теперь, когда мы находимся на этом, та же проблема относится к положению окна.Вы не можете получить фактическую позицию окна.То, что вы можете получить, это положение окна просмотра относительно экрана.Таким образом, для этого также используется то же самое рабочее значение:

function addWinPosGetterFuncs(){
   var currViewportLeft = screenLeft ;
   var currViewportTop = screenTop ;
   moveTo(currViewportLeft,currViewportTop) ;
   var viewportOffsetX = screenLeft-currViewportLeft ;
   var viewportOffsetY = screenTop-currViewportTop ;
   moveTo(currViewportLeft-viewportOffsetX,currViewportTop-viewportOffsetY) ;
   window.getScreenX = new Function('return screenLeft-'+viewportOffsetX) ;
   window.getScreenY = new Function('return screenTop-'+viewportOffsetY) ;
}

Аналогично, функция создает два новых метода, которые будут извлекать фактическую позицию окна: window.getScreenX() и window.getScreenY()

Проблема решена.Я дам вам, ребята, понять, как работает функция;)

1 голос
/ 22 октября 2014

минимизированная версия:

window.pos=new function(w,h,x,y){with(document.body)return(
    resizeTo(w=offsetWidth,h=offsetHeight),resizeTo(w+(w=w-offsetWidth),h+(h=h-offsetHeight)),
    moveTo  (x=screenLeft ,y=screenTop   ),moveTo  (x-(x=screenLeft-x ),y-(y=screenTop-y   )),{
        w:function(){return offsetWidth +w},
        h:function(){return offsetHeight+h},
        x:function(){return screenLeft  -x},
        y:function(){return screenTop   -y}
})};
...