0

默认情况下,Glimpse 在结束</body>标记之前注入其脚本。这样做的结果是在页面加载时完成的 AJAX 调用未被捕获。我$(document).ready()用来调用AJAX。

是否有配置选项或占位符字符串放入我的 Layout.cshtml 中,以指示 Glimpse 在我的初始化脚本之前加载?

编辑 - 当我在 Ajax 选项卡下打开完整的 Glimpse 视图时,页面加载请求确实出现了。但它不会增加小型覆盖显示上的 Ajax 计数器。在第一个请求的成功处理程序中稍微进一步启动的任何请求都会增加计数器。所以也许问题出在其他地方?

4

2 回答 2

2

您无法配置选项来确定 Glimpse 将在何处呈现其脚本标签,就像您提到的那样,脚本标签将在</body>标签之前呈现,这样可以在加载页面的其余部分时最大限度地减少 Glimpse 客户端的影响. 此注入也已完成,与您使用 ASP.NET MVC 或 ASP.NET WebForms 无关。

另一方面,您提到的问题已经在Glimpse 问题跟踪器上已知并且正在处理中,因此请不要犹豫,在那里提供额外的反馈。

于 2013-09-03T09:02:21.747 回答
1

接受的答案仍然适用,但由于它略微降低了工具对我的可用性,我创建了以下解决方法,延迟所有调用,$(document).ready()直到加载 Glimpse HUD。如果 Glimpse 关闭,则没有延迟。

// workaround for the problem when Glimpse does not correctly show AJAX requests that happen before the HUD is initialized
(function () {
    var origDocumentReady = $.fn.ready;
    var checkFinished = false;
    $.fn.ready = function (delegate) {
        var timerId = -1;
        var counter = 0;
        var check = function () {
            if (counter++ > 50) //~2.5sec - if still not loaded, give up
                checkFinished = true;

            if (checkFinished || document.getElementById("glimpse-hud-section-input-ajax")) {
                checkFinished = true;
                window.clearInterval(timerId);
                delegate();
            }
        }

        origDocumentReady(function () {
            if (!checkFinished && typeof glimpse === typeof undefined)
                checkFinished = true;

            if (checkFinished)
                delegate();
            else
                timerId = window.setInterval(check, 50);
        });
    }
})();
于 2013-09-04T08:34:48.593 回答