script crash explorer but not mozilla`

Discussion in 'Javascript' started by thomas, Nov 10, 2003.

  1. thomas

    thomas Guest

    HI
    I've written a simpole script to open a new window with an image and
    resize the window depending on the image size: it is

    function fitToSize()
    {
    if( window.document.images )
    window.resizeTo(window.document.images[0].width+100,
    window.document.images[0].height+50);
    }

    function animUrl(url)
    {
    var p = 'scrollbars=yes,resizable=yes,toolbar=no,' +
    'menubar=no,status=no,location=no,left=85,top=20';

    var win = window.open("","animWindow",p);
    win.document.writeln('<html>');
    win.document.writeln('<head>');
    win.document.writeln('<link type="text/css" rel="stylesheet"
    href="../style/styleThomas.css">');
    win.document.writeln('<script
    src="../js/animWindow.js"></script>');
    win.document.writeln('</head>');
    win.document.writeln('<body id="animWindow"
    onload="fitToSize();">');
    win.document.writeln('<img name ="imgTag" class="center" src="' +
    url + '">');
    win.document.writeln('<p><a href="javascript:;"
    onclick="self.close();">Close window</a></p>');
    win.document.writeln('</body>');
    win.document.writeln('</html>');
    win.document.close();
    //win.resizeTo(win.document.images[0].width,200);
    win.focus();

    return false;
    }

    It is very simple. I call it with the following in the html pages:
    <a href="javascript:;" onclick="return animUrl('image.gif');">A Gif
    image</a>

    Clicking on the link crash explorer that immediately freezes.
    It works well everywhere else, excpet Opera that complain with an
    obnoxious message.

    Does anybody see what's obviously wrong in my code?
    Thanks

    Thomas
     
    thomas, Nov 10, 2003
    #1
    1. Advertising

  2. "thomas" wrote on 10/11/2003:

    > HI
    > I've written a simpole script to open a new window with an image and
    > resize the window depending on the image size: it is
    >
    > function fitToSize()
    > {
    > if( window.document.images )
    > window.resizeTo(window.document.images[0].width+100,
    > window.document.images[0].height+50);
    > }
    >
    > function animUrl(url)
    > {
    > var p = 'scrollbars=yes,resizable=yes,toolbar=no,' +
    > 'menubar=no,status=no,location=no,left=85,top=20';
    >
    > var win = window.open("","animWindow",p);
    > win.document.writeln('<html>');
    > win.document.writeln('<head>');
    > win.document.writeln('<link type="text/css" rel="stylesheet"
    > href="../style/styleThomas.css">');
    > win.document.writeln('<script
    > src="../js/animWindow.js"></script>');
    > win.document.writeln('</head>');
    > win.document.writeln('<body id="animWindow"
    > onload="fitToSize();">');
    > win.document.writeln('<img name ="imgTag" class="center" src="'

    +
    > url + '">');
    > win.document.writeln('<p><a href="javascript:;"
    > onclick="self.close();">Close window</a></p>');
    > win.document.writeln('</body>');
    > win.document.writeln('</html>');
    > win.document.close();
    > //win.resizeTo(win.document.images[0].width,200);
    > win.focus();
    >
    > return false;
    > }
    >
    > It is very simple. I call it with the following in the html pages:
    > <a href="javascript:;" onclick="return animUrl('image.gif');">A Gif
    > image</a>
    >
    > Clicking on the link crash explorer that immediately freezes.
    > It works well everywhere else, excpet Opera that complain with an
    > obnoxious message.
    >
    > Does anybody see what's obviously wrong in my code?
    > Thanks
    >
    > Thomas


    I don't get a crash, but I do get an 'access denied' error. I think
    it's because of a violation of the 'Same Origin Policy': you can't
    access properties in a window or frame that didn't originate from the
    same domain as the accessing document. As there is no URL at all, IE
    probably assumes that no-one should get access - but that's just a
    guess. I had the same problem, but there is a simple solution:
    include a variable on the calling page that the image window can use
    to get the URL. You could actually write a HTML page (rather that
    generate one entirely at run-time) that only fills-in the image
    source:

    <!-- Your !DOCTYPE, HEAD, BODY, etc. for the image window -->
    <SCRIPT type="text/javascript">
    <!--
    document.writeln( '<IMG src="' + window.opener.imageURL + '">' );
    // -->
    </SCRIPT>
    <!-- The rest of your document -->

    Hope you have better luck,
    Mike

    --
    Michael Winter
    M.Winter@[no-spam]blueyonder.co.uk (remove [no-spam] to reply)
     
    Michael Winter, Nov 10, 2003
    #2
    1. Advertising

  3. thomas

    thomas Guest

    I did exactly what you said and it works.
    My only regret is that I have to declare this variable imageURL in
    every page that use this script.
    But thank you very much, since Explorer does not crash anymore.

    Thomas

    "Michael Winter" <M.Winter@[no-spam]blueyonder.co.uk> wrote in message news:<16Vrb.1665$>...
    > "thomas" wrote on 10/11/2003:
    >
    > I don't get a crash, but I do get an 'access denied' error. I think
    > it's because of a violation of the 'Same Origin Policy': you can't
    > access properties in a window or frame that didn't originate from the
    > same domain as the accessing document. As there is no URL at all, IE
    > probably assumes that no-one should get access - but that's just a
    > guess. I had the same problem, but there is a simple solution:
    > include a variable on the calling page that the image window can use
    > to get the URL. You could actually write a HTML page (rather that
    > generate one entirely at run-time) that only fills-in the image
    > source:
    >
    > <!-- Your !DOCTYPE, HEAD, BODY, etc. for the image window -->
    > <SCRIPT type="text/javascript">
    > <!--
    > document.writeln( '<IMG src="' + window.opener.imageURL + '">' );
    > // -->
    > </SCRIPT>
    > <!-- The rest of your document -->
    >
    > Hope you have better luck,
    > Mike
     
    thomas, Nov 11, 2003
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Ed Hauptman
    Replies:
    7
    Views:
    1,032
    Ed Hauptman
    Aug 7, 2009
  2. lendle
    Replies:
    1
    Views:
    117
  3. mark
    Replies:
    1
    Views:
    110
    Michael Winter
    Dec 6, 2004
  4. Replies:
    2
    Views:
    156
    Thomas 'PointedEars' Lahn
    Apr 12, 2005
  5. VK
    Replies:
    6
    Views:
    126
Loading...

Share This Page