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. Advertisements

  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. Advertisements

  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. Advertisements

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. Henri
    Replies:
    9
    Views:
    2,226
    Toby Inkster
    Feb 22, 2005
  2. Ed Hauptman
    Replies:
    7
    Views:
    1,333
    Ed Hauptman
    Aug 7, 2009
  3. lendle
    Replies:
    1
    Views:
    224
  4. mark
    Replies:
    1
    Views:
    189
    Michael Winter
    Dec 6, 2004
  5. Replies:
    2
    Views:
    265
    Thomas 'PointedEars' Lahn
    Apr 12, 2005
  6. VK
    Replies:
    6
    Views:
    296
  7. goober
    Replies:
    6
    Views:
    245
    GĂ©rard Talbot
    May 27, 2006
  8. gray_slp
    Replies:
    3
    Views:
    326
    Geoffrey Summerhayes
    Jun 27, 2007
Loading...