Is there an easy way to get a remote script and run code when it has loaded as well as check the content type? $.getScript only works with those scripts on the same server.
The problem I have is when using Google Maps I get often the sorry CAPTCHA page (the one you get if too many requests are made) instead of the JavaScript. This results in the rest of the JavaScript (not just the map) on the page not working. What I want to do is show that page (preferably in a Thickbox) when it happens so that the map will still work. The IP address is a common one (which is probably why the page is loaded) as it is used on a large WAN (NHS infact). I have asked on the Google Maps Help Group (July 31), but no one replied (even after replying to my own post over a week later. So I want to find out how to work around the problem. I have also tried having a proxy page at the server using ASP.NET and even then it doesn't work (only part of the script is loaded) which is a WebHandler: <%@ WebHandler Language="C#" Class="GoogleMaps" %> using System; using System.Web; using System.Text; using System.IO; using System.Net; public class GoogleMaps : IHttpHandler { public void ProcessRequest (HttpContext ctx) { ctx.Response.ContentType = "text/javascript"; ctx.Response.Write(GetRemoteScript(ctx, "http://maps.google.com/maps? file=api&v=2&key=GoogleMapsAPIKey")); ctx.Response.End(); } public bool IsReusable { get { return false; } } private string GetRemoteScript(HttpContext ctx, string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Referer = "http://www.mywebsite.nhs.uk"; request.ContentType = "text/javascript"; try { // get the response HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // set the content length int contentLength = (int)response.ContentLength; // get the stream Stream responseStream = response.GetResponseStream(); // Pipes the stream to a higher level stream reader with the required encoding format. StreamReader readStream = new StreamReader(responseStream, ctx.Response.ContentEncoding); // create a char array char[] data = new char[contentLength]; // load from the stream into the char array readStream.Read(data, 0, contentLength); // return the data as a string return new String(data); } catch(Exception ex) { return string.Empty; } return string.Empty; } }