Re: Problem with Image display on separate window



"bruce barker" <nospam@xxxxxxxxxx> wrote in message
news:ejcUTlwTHHA.2256@xxxxxxxxxxxxxxxxxxxxxxx
you need to use a window.setTimeout() to do the loop. a better approach is
to render the image size with the name, so that when client script opens
the img, it can pre-specify the size which has better usability.

Not sure what you mean on the pre-specifying the size.

But I couldn't really get the setTimeout to work or using a pause type of
scenario and I assume this is why others couldn't either. What happens is
when you are in a loop (while loop or for loop of x iterations to simulate
milliseconds) it seems to be gobbling up the cpu (as it is running as fast
as it can) and no work gets done until the loop is finished.

For example, I tried:

********************************
function entry()
{
document.PictureDisplay.src = "..\\..\\uploads\\" +
opener.document.getElementById('CompanyPicture').innerHTML;
id = document.getElementById("PictureDisplay");

for (var x = 1; x <= 10; x++)
{
if (id.readyState == "complete") break;
pauseIt(10000);
}

alert("id after for loop ReadyState = " + id.readyState + " x = " + x);
w = id.width+10;
h = id.height+50;
// alert ("w = " + w + " h = " + h);
window.resizeTo(w,h);
if (screen) {
x = (screen.availHeight - h)/2;
y = (screen.availWidth - w)/2;
}
window.moveTo(y,x);
window.focus();
alert("id ReadyState = " + id.readyState);
}
function pauseIt(millis)
{
var date = new Date();
var curDate = null;

do { curDate = new Date(); }
while(curDate-date < millis);
}
***********************************************

This would come back as uninitialized after the for loop and would still
seem to work fine. The last alert would show it as complete.

I need to find a way to make it wait about 10 seconds for each loop (without
some time of other loop) while the image is being loaded. In this case, it
will usually only use one loop to load the image. It is normally loaded in
about 1 or 2 seconds (if even that long - if cached).

Thanks,

Tom


-- bruce (sqlwork.com)


tshad wrote:
"bruce barker" <nospam@xxxxxxxxxx> wrote in message
news:eWMnBUuTHHA.3592@xxxxxxxxxxxxxxxxxxxxxxx
you are correct. setting the src starts a download, you should check
readyState of the image before checking the size.

I have been reading on this and found there are problems trying get this
to work. Correctly. Sometime looping causes infinite loops and out of
memory errors.

Is there a way around this?

Also, is there some type of hide window function? I am trying open the
window in a hidden state until the image is loaded and resized before I
display it. Right now I get this sort of post back type of look where
the window is opened and then resized and the window that called it is
redrawn and it looks clumsy.

Thanks,

Tom
-- bruce (sqlwork.com)

tshad wrote:
Could this be that the image is not totally loaded yet?

The first thing it does is load the image into the image tag:

document.LogoDisplay.src = "..\\..\\uploads\\" +
opener.document.getElementById('Logo').innerHTML;

Then it gets the size of the image:

id = document.getElementById("LogoDisplay");
w = id.width+10;
h = id.height+50;

is it possible by the time I get to this set of code only part of the
image is loaded and the all subsequent times it is getting the image
from some cache that is quicker?

I can't think of any other reason that would cause this?

Thanks,

Tom

"tshad" <t@xxxxxxxx> wrote in message
news:%23SHCO8tTHHA.5108@xxxxxxxxxxxxxxxxxxxxxxx
This was posted before but the message got messed up (all NLs were
stripped
out for some reason).

I have 2 labels that hold the name of different images on my .aspx
page.

<asp:Label ID="Logo" runat="server"/>
<asp:Label ID="CompanyPicture" runat="server"/>

I have 2 links that open the windows to preview these images. The
previewed
images are done on separate html pages that do nothing but display the
image.

function OpenLogoPreviewWindow()
{

window.open('logoDisplay.htm','myWindow','menubar=no,toolbar=no,directories=no,resizable=no,scrollbars=no,location=no,status=no');
}
function OpenPicturePreviewWindow()
{

window.open('CompanyPictureDisplay.htm','myWindow','menubar=no,toolbar=no,directories=no,resizable=no,scrollbars=no,location=no,status=no');
}

This works most of the time. But the first time you do it, it has the
wrong
dimensions. For example, for the CompanyPicture - the size is 502 by
400.The very first time a machine loads this picture, it will be
incorrect.
It will be something like 38 by 87. From that point on it will be
correct.
Even if I change the picture - it will size it correctly. It will
also work
correctly if I reboot the machine.

To test it I need to go to another machine that has
never run it. The code for each page is:

LogoDisplay.htm
*********************************************************
function entry()
{
//alert("In LogoDisplay");
document.LogoDisplay.src = "..\\..\\uploads\\" +
opener.document.getElementById('Logo').innerHTML;
id = document.getElementById("LogoDisplay");
w = id.width+10;
h = id.height+50;
// alert ("w = " + w + " h = " + h);
window.resizeTo(w,h);
if (screen) {
x = (screen.availHeight - h)/2;
y = (screen.availWidth - w)/2;
}
window.moveTo(y,x);
window.focus();
}
</script>
</head>
<body onLoad="entry()">
<img name="LogoDisplay">
</body>
</html>
*********************************************************

CompanyPictureDisplay.htm
**********************************************************
function entry()
{
document.PictureDisplay.src = "..\\..\\uploads\\" +
opener.document.getElementById('CompanyPicture').innerHTML;
id = document.getElementById("PictureDisplay");
w = id.width+10;
h = id.height+50;
// alert ("w = " + w + " h = " + h);
window.resizeTo(w,h);
if (screen) {
x = (screen.availHeight - h)/2;
y = (screen.availWidth - w)/2;
}
window.moveTo(y,x);
window.focus();
}
</script>
</head>
<body onLoad="entry()">
<img name="PictureDisplay">
</body>
</html>
****************************************************************

Thanks,

Tom








.



Relevant Pages

  • Re: Loop to load webpage
    ... a reference an already open IE window. ... Dim objShell As Object, objShellWindows As Object, o As Object ... > ' Loop until the page is fully loaded ...
    (microsoft.public.excel.programming)
  • Re: Pass Worksheet Button Caption or Identifier to Sub
    ... Rightclick on the righthand window and choose "Show Hidden Members" ... You could loop through all the shapes on the worksheet. ... dim BTN as Button ... Sub ClickProc() ...
    (microsoft.public.excel.programming)
  • Re: Deaf CAsyncSocket on Windows Service.
    ... unlucky timing coincidence between Send, OnReceive, Receiveand data ... encountered) is that the OnReceive notification is a message in the Windows ... If OnReceive somehow lets a message loop run (such as by ... Not sure how this notification could be dropped; it is a window message, ...
    (microsoft.public.vc.mfc)
  • Re: Why does this TextOut() sometimes hang up?
    ... Call periodically in your loop. ... when the window ... // virtual window device context ... ScreenWidth = GetSystemMetrics; ...
    (microsoft.public.vc.mfc)
  • Re: Problem with Image display on separate window
    ... IE7 puts an address bar at the top of the picture below the title bar. ... I am curious as to why the large image loads quick after the first time it ... is when you are in a loop (while loop or for loop of x iterations to ... is there some type of hide window function? ...
    (microsoft.public.dotnet.framework.aspnet)

Loading