Mobile Safari中的AngularJS XHR永远地旋转网络指示器

时间:2013-07-29 16:30:09

标签: angularjs xmlhttprequest mobile-safari

我有一个跨两个子域运行的Web应用程序,所有调用都按预期工作。问题是当我创建跨子域XmlHTTPRequest时,在Mobile Safari中,无论请求是否成功,网络指示器(在状态栏中)都会永远旋转。如果我在本地子域上发出请求,则在呼叫返回时指示符停止。

我正在使用AngularJS来完成我的XHR工作。这段代码按我的预期工作:

$http( {method: "GET", url: "http://my.domain.com"} ).success (data) ->
    console.log "success " + data
.error (data, status) ->
    console.log status + " " + data

但如果我这样做:

$http( {method: "GET", url: "http://other.domain.com"} ).success (data) ->

然后网络指标永远旋转。它似乎在桌面Safari中正确完成(据我所知)。 Web Inspector中没有任何内容表明任何调用都处于挂起状态 - 我可以看到返回的数据,我的应用程序收到所有回调。在Chrome(iOS和桌面版)中,网络指示灯会按预期停止旋转。

修改

我向Apple提交了一个错误。他们因“信息不足”而关闭它,但从未要求提供更多信息。我可以使用iOS 7或6.1进行复制,但在iOS 6.0中,网络微调器按预期停止。这强烈暗示这是一个苹果虫。

我在没有Angular的情况下重新编写:

<script type="text/javascript">
    xhr = new window.XMLHttpRequest();
    xhr.onreadystatechange = function() {
        console.log("ready state changed to " + xhr.readyState);
        if (xhr.readyState == 4) {
            console.log("HTTP status " + xhr.status);
        }
    };
    xhr.open("get", "//my.domain.com", true);
    xhr.send();
</script>

同样,如果请求改为//other.domain.com,其中“other”是与托管脚本/ HTML不同的子域,则网络微调器将永远运行。

0 个答案:

没有答案