@Mike:  Update - it's all up and running!  You can see it here:
http://tinyurl.com/5n8mco

Thanks so much for your help (OK... for DOING it!).  I really
appreciate it!

 - John

On Sep 8, 12:52 pm, bcbounders <[EMAIL PROTECTED]> wrote:
> Mike,
>
> WOW!  Thanks so much! This is TOTALLY the kind of thing I was looking
> for.  Thanks for taking the time to do such a thorough mock-up!  You
> ROCK, dude!
>
> Thanks... can't wait to go try this out!
>
>  - John
>
> On Sep 8, 10:18 am, "Michael Geary" <[EMAIL PROTECTED]> wrote:
>
> > Brad has a great idea there.
>
> > To really protect your page, you need to take one more step. (I assume you
> > have other content on the page, right?)
>
> > If ibegin.com is down in a way that results in a slow timeout instead of an
> > immediate "unavailable" response, it will delay loading the rest of your
> > page until the browser times out.
>
> > To fix this, move the weather gadget out of your page and into an IFRAME.
> > That way, no matter what goes wrong at ibegin.com, it will never affect the
> > rest of your page.
>
> > Inside the IFRAME, you can use code similar to Brad's.
>
> > Here's a working test page:
>
> >  <http://mg.to/test/ibegin/ibegin.html>http://mg.to/test/ibegin/ibegin.html
>
> > The iframe for this page is in:
>
> >  <http://mg.to/test/ibegin/weatherframe.html>http://mg.to/test/ibegin/weatherframe.html
>
> > And here's a "broken" test page. It's the same code with a deliberate error
> > in the ibegin URL:
>
> >  <http://mg.to/test/ibegin/wunder.html>http://mg.to/test/ibegin/wunder.html
>
> > That deliberate error is actually in the iframe code, so it uses a different
> > copy of the iframe just for testing:
>
> >  <http://mg.to/test/ibegin/weatherframe1.html>http://mg.to/test/ibegin/weatherframe1.html
>
> > You'll notice it loads a Weather Underground gadget instead of just a static
> > image. That seems more useful than a static image, and the chances of both
> > weather services being down seems pretty low. (And in that case the rest of
> > your page would still load fine because of the iframe.)
>
> > For reference, here's the <iframe> tag in ibegin.html:
>
> >     <iframe frameborder="0" style="width:220px; height:320px;
> > overflow:hidden;" src="weatherframe.html">
> >     </iframe>
>
> > And here's the complete HTML for the iframe (weatherframe.html):
>
> > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
> > <html lang="en">
> > <head>
> >     <title></title>
> > </head>
> > <body scroll="no" style="margin:0; padding:0;">
>
> >     <script type="text/javascript"
> > src="http://weather.ibegin.com/js/us/ak/ninilchik/0/0/1/1/0/custom.js
> > <http://weather.ibegin.com/js/us/ak/ninilchik/0/0/1/1/0/custom.js&back...
> > _color=transparent&color=093384&width=200&padding=0&border_width=0&border_c 
> > o
> > lor=transparent&font_size=18&font_family=inherit&showicons=1>
> > &background_color=transparent&color=093384&width=200&padding=0&border_width 
> > =
> > 0&border_color=transparent&font_size=18&font_family=inherit&showicons=1">
> >     </script>
>
> >     <script type="text/javascript">
> >         if( ! document.getElementsByTagName('div').length )
> >             document.write(
> >                 '<div style="text-align:center;">',
> >                     '<a
> > href="http://www.wunderground.com/US/AK/Ninilchik.html?bannertypeclick=infob
> > ox"
> > <http://www.wunderground.com/US/AK/Ninilchik.html?bannertypeclick=infobox>>',
>
> >                         '<img
> > src="http://banners.wunderground.com/weathersticker/infobox/language/www/US/
> > AK/Ninilchik.gif" border=0 alt="Click for Ninilchik, Alaska Forecast"
> > height=108 width=144>',
> >                     '</a>',
> >                 '</div>'
> >             );
> >     </script>
>
> > </body>
> > </html>
>
> > As you can see, the code doesn't use jQuery, and it doesn't use a 2 second
> > timeout either. There's no need for any of that, and you wouldn't want the
> > overhead of loading jQuery in this little iframe anyway.
>
> > Script tags are executed in the order in which they appear in the source.
> > When the second script tag is run, the first one (loaded from ibegin.com)
> > has already completed execution and created its DIV elements - or failed to
> > execute, whichever the case may be.
>
> > So the second script tag can immediately test for the <div> that the first
> > one creates, and if it's not there it does a document.write to add the
> > Weather Undergound gadget instead.
>
> > -Mike
>
> > > From: bcbounders
>
> > > Brad,
>
> > > Interesting approach... I like it!  Now I'll see if I can get
> > > this to work on the site... like replacing the missing widget
> > > with a static image or something... so the page doesn't have
> > > a gaping hole where the weather's supposed to be (which is
> > > what was happening when iBegin was down and the widget
> > > wouldn't load, on-and-off all day a few days ago).
>
> > > Thanks a lot!!!
>
> > >  - John
>
> > > On Sep 7, 6:22 pm, Brad <[EMAIL PROTECTED]> wrote:
> > > > Here is a different approach. Include the javascript source for the
> > > > weather.ibegin.com in the body of your page. On load run a delayed
> > > > function to see if it has written its forecast to your page. I ran
> > > > this on a test page and it worked. I could never get the
> > > ibegin source
> > > > to fail, therefore I had to change the script source to
> > > something else
> > > > likehttp://foo.weather.ibegin.com/... to simulate failure.
> > > BTW, I was
> > > > playing with the widget, so my example gets a different
> > > forecast than
> > > > yours.
>
> > > > <script>
>
> > > >         var ibeginHTML;
> > > >         function ibeginLoaded() {
> > > >                 ibeginHTML = $("#ibegin div").html();
> > > >                 if (ibeginHTML == null) {
> > > >                         alert('Widget not loaded');
> > > >                         // You'd do something useful here
> > > like insert
> > > > your missing widget image
> > > >                 }
> > > >         }
>
> > > >         function ibeginTest() {
> > > >                 // Give the widget a few seconds to load
> > > >                 setTimeout('ibeginLoaded();',2000);
> > > >         }
>
> > > >         $().ready(function(){
> > > >                 ibeginTest();
> > > >         });
>
> > > > </script>
> > > > </head>
> > > > <body>
> > > >  ... other content ...
> > > > <div id="ibegin">
> > > > <script type="text/javascript"
> > > src=" <http://foo.weather.ibegin.com/js/>
>
> >http://foo.weather.ibegin.com/js/> > us/nm/santa+fe/1/1/1/1/1/
>
> > > custom.js&background_color=ffffff&color=000000&width=175&padding=10&bo
> > > > rder_
>
> > > width=1&border_color=000000&font_size=11&font_family=Tahoma&showicons=
> > > > 1"></
> > > > script><noscript><a href=" <http://weather.ibegin.com/>
>
> >http://weather.ibegin.com/";>Weather
>
> > > > Information by iBegin</a></noscript>
> > > > </div>
> > > >  ... more content ...
> > > > </body>
> > > > </html>
>
> > > > On Sep 7, 3:55 pm, bcbounders <[EMAIL PROTECTED]> wrote:
>
> > > > > OK... so here's what I've got so far.  I'm trying to work out the
> > > > > jQuery so that if the iBegin weather widget is
> > > successfully loaded,
> > > > > then the <div id="weather"> is shown... otherwise, it's hidden.
>
> > > > > <script type="text/javascript">
> > > > >         jQuery.ready(function(){
> > > > >                 jQuery("#weather").replaceWith({
> > > > >                         jQuery.ajax({
> > > > >                                 type: "GET",
> > > > >                                 dataType: "script",
> > > > >                                 url:
> > > > > " <http://weather.ibegin.com/js/us/ak/ninilchik/0/0/1/1/0/>
>
> >http://weather.ibegin.com/js/us/ak/ninilchik/0/0/1/1/0/
>
> > > custom.js&background_color=transparent&color=093384&width=200&paddin
> > > > > g=0&bor
>
> > > der_width=0&border_color=transparent&font_size=18&font_family=inheri
> > > > > t&showi cons=1",
> > > > >                                 success: function(){
>
> > > > > jQuery("#weather").show()
> > > > >                                         },
> > > > >                                 error: function(){
>
> > > > > jQuery("#weather").hide()
> > > > >                                         }
> > > > >                         });
> > > > >                 });
> > > > >         });
> > > > > </script>
>
> > > > > But... what I've got isn't working.  And, being new to
> > > jQuery (and
> > > > > Javascript), I'm not sure why it's not working... or even
> > > if this is
> > > > > the best route to try and achieve what I want.
>
> > > > > Can someone take a look and provide some feedback?  I'd really
> > > > > appreciate it!
>
> > > > > Thanks a lot!
>
> > > > >  - John
>
> > > > > On Sep 6, 10:49 am, bcbounders <[EMAIL PROTECTED]> wrote:
>
> > > > > > Rene,
>
> > > > > > Thanks so much for posting.
>
> > > > > > I got the site up, using the iBegin weather widget on
> > > it's own.  
> > > > > > If it helps, here's a link:   <http://tinyurl.com/5n8mco>
>
> >http://tinyurl.com/5n8mco
>
> > > > > > I'll take a stab at doing what you suggest... wish me
> > > luck! :D  But...
> > > > > > expect to hear more questions from me soon.
>
> > > > > >  - John

Reply via email to