2

是否可以更改此代码,因此如果http://www.myurl.com重定向到应该运行的 js 文件,它将递归工作?

function include(scriptUrl)
{
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", scriptUrl);
        xmlhttp.onreadystatechange = function()
        {
            if ((xmlhttp.status == 200) && (xmlhttp.readyState == 4))
            {
                eval(xmlhttp.responseText);
            }
        };
        xmlhttp.send();
}
include("http://www.myurl.com");
4

2 回答 2

2

为什么不这样做:

$("head").append("<script src='http://myurl.com' type='text/javascript'></script>"); 

当然你可以不用 jquery 来做,但这就是它的要点。如果您只是从只需要 GET 参数(如果有的话)的 URL 中提取,那么只需添加一个包含它的新脚本元素就更容易(也更安全)。

这也将解决您的重定向问题,因为浏览器将遵循重定向。

于 2012-08-29T11:11:18.993 回答
1

当 URL 将您重定向到另一个位置时,它可能会给您 301状态而不是 200 状态。在这种情况下,您的支票应该是:

if ((xmlhttp.status == 200 || xmlhttp.status == 301) && xmlhttp.readyState == 4)

或者您可以选择允许除错误状态之外的所有状态:

if (xmlhttp.status < 400 && xmlhttp.readyState == 4)
于 2012-08-29T11:07:21.370 回答