How to get the size of a HTA window?

♀尐吖头ヾ 提交于 2020-01-15 07:34:53

问题


You can SET the size of a HTA window but I can't find a way to GET its size.

All I can think of is reading document.body.offsetWidth and .offsetHeight, but those give you the viewport size not the actual window size.

Is it possible to know that?


回答1:


It seems there are no properties or methods to get that information. The now beta-released IE9 has the new properties outterWidth and outterHeight, but that is not an option for now.

So I devised a workaround for this:

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) ;
}

What that function does is to create two new methods for the window object: window.getWidth() and window.getHeight(). They will get the actual size of the window.
The function requires the existence of the body object so it has to be executed after the BODY tag.


And now that we are at it, the same problem applies for the window position. You can't get the actual window position. What you can get is the viewport position relative to the screen. So the same workaroud serves for this as well:

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) ;
}

Likewise, the function creates two new methods that will retrieve the actual window position: window.getScreenX() and window.getScreenY()

Problem solved. I'll let you guys figure out how the function works ;)




回答2:


minified version:

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}
})};


来源:https://stackoverflow.com/questions/5503242/how-to-get-the-size-of-a-hta-window

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!