在response.redirect触发之前暂停HTML输出

时间:2013-12-02 09:28:49

标签: c# asp.net google-analytics

注意:我不确定问题的标题,所以请随时编辑它。

我想暂停在.aspx页面中执行page_laod事件。以下是我的情景。

请注意我已经简化了代码,我的实际代码有点不同。

我有以下Page1.aspx,其中aspx代码如下。

<%@ Page language="c#" Codebehind="Page1.aspx.cs" AutoEventWireup="false" Inherits="Ass1.Page1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
    <!------------------------- HTML code like title etc.. ------------------------->
    <script src='gatc.js' async defer></script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
        </form>
    </body>
</HTML>

和Page1.aspx.cs的Page_Load事件如下

private void Page_Load(object sender, System.EventArgs e)
{
    LogPDF(CatmastCat);
    Response.Redirect("/PDF/Pdf1.pdf");
}

正如您所看到的,我在页面中做的不多,此页面只是将请求转移到特定的PDF。

我的问题最近我们公司已经开始在所有网页上实施GATC(Google解析),我在网页上添加了GATC文件但实际上因为我们在page_load本身有Response.Redirect("/PDF/Pdf1.pdf");浏览器直接将页面重定向到PDF但我需要做的事情应该首先执行gatc.js,然后重定向到PDF,以便GATC可以跟踪page1.aspx上的点击。

此外我不想在.cs文件中进行更改,因为我需要上传整个项目(这是一个安静的大)DLL,如果我在.cs文件中进行任何更改。所以我想通过仅改变.aspx文件来处理这个问题。

我已经尝试过跟随,但我认为它不是在跟踪

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<%@ Page language="c#" Codebehind="Page1.aspx.cs" AutoEventWireup="false" Inherits="Ass1.Page1" %>
<HTML>
    <HEAD>
    <!------------------------- HTML code ------------------------->
    <script src='gatc.js' async defer></script>
    </HEAD>
    /////////////// Change here
    <script runat="server">
    protected override void OnPreInit(EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);
    }
    </script>   
    /////////////// Change here
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
        </form>
    </body>
</HTML>

请建议我解决这个问题..

1 个答案:

答案 0 :(得分:1)

要禁用重定向,您只需在.aspx文件中定义自己的版本Page_Load:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        LogPDF(CatmastCat);
    }    
</script>

然后处理必须在客户端完成。您只需等待分析调用完成。

这取决于您的分析版本,请参阅:

https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced

  

设置命中回调

     

在某些情况下,例如跟踪出站链接时,您可能希望这样做   知道跟踪器何时完成发送数据。

它会导致类似:

ga('send', 'pageview', {
  'page': '/Page1.aspx',
  'hitCallback': function() {
    window.location='http://mydomain.com/PDF/Pdf1.pdf';
  }
});

https://developers.google.com/analytics/devguides/collection/gajs/

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);
  _gaq.push(function() {
        window.location='http://mydomain.com/PDF/Pdf1.pdf';
      });