相关疑难解决方法(0)

暂时禁止jQuery事件处理

有一种优雅的方式来暂时抑制jQuery事件吗?我使用这样的代码:

$(element).unbind(event, function1).unbind(event, function2);
// code for which the event is suppressed
$(element).bind(event, function1).bind(event, function2);
Run Code Online (Sandbox Code Playgroud)

但我发现它有点笨拙,并且对很多事件来说都不是很容易扩展.为什么我要暂时压制事件?我使用BlockUI插件在Ajax访问期间阻止UI.这是通过BlockUI提出的:$().ajaxStart($.blockUI).ajaxStop($ .unblockUI)来完成的.

但是,一个Ajax访问是特殊的,所以我需要一个不同的消息.ajaxStart和ajaxStop事件会干扰消息代码(不显示任何内容):

function message(text, callback) {
  if (text == undefined) {
     $.unblockUI();
     return;
  }

  // $().unbind('ajaxStop', $.unblockUI).unbind('ajaxStart', $.blockUI);
  $("#message_text").html(text);
  $.blockUI({message: $("#message")});
  $("#message_ok").click(function() { 
    // $().bind('ajaxStop', $.unblockUI).bind('ajaxStart', $.blockUI);
    $.unblockUI();
    if (callback != undefined) callback();
  });
}
Run Code Online (Sandbox Code Playgroud)

只有当我取消注释unbind()和bind()行时,它才有效.

jquery jquery-plugins

20
推荐指数
4
解决办法
2万
查看次数

竞争条件并同步使用Google Analytics异步(_gaq)

我有一个使用Google Analytics更新的异步跟踪方法(_gaq)的网站.我遇到的问题是我想建立一些特定的链接跟踪,并担心我会创建一个竞争条件.

基本上,它是一个新闻网站,所以它有标题链接到各地的故事.故事的标题可能出现在页面上的3个不同位置,并出现在数百个其他页面上.因此,为了理解我们的受众如何与网站进行交互,我们必须跟踪每个特定标题块的使用方式,而不仅仅是目的地.由于这两个规定跟踪单个页面,跟踪引用页面是不够的,我们必须跟踪单个链接.

所以,如果我有一个链接.

<a href="http://www.blah.com" onclick="_gaq.push('_trackEvent','stuff')">Here</a>
Run Code Online (Sandbox Code Playgroud)

因为_gaq.push()是异步调用,所以在Google完成点击跟踪之前是否可能发生页面更改?如果是这样可以防止这种情况发生,或者我对Google AnalyticsAsync的运行方式存在误解(http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html).

analytics google-analytics race-condition

18
推荐指数
2
解决办法
6207
查看次数

Google Analytics异步:事件跟踪回调?

我希望使用事件跟踪来记录对另一个网站的特定链接类型的点击.我正在使用jQuery,我目前的代码是:

$('a.website').click(function(event) {
    var href = $(this).attr('href');
    try {
        _gaq.push(['_trackEvent', 'website', 'click', href]);
    } catch(err) {}
});
Run Code Online (Sandbox Code Playgroud)

然而,从其他网站看到引荐信息后,我也不敢相信这是准确跟踪点击,可能是因为_gaq.push是异步的,并请求的浏览器导航到URL之前尚未收到,并终止任何JavaScript的运行当前页面.

有没有办法检测到该_gaq.push功能是否已成功完成,所以我可以在记录事件使用event.preventDefault()document.location导航到该链接?

javascript jquery google-analytics event-tracking

13
推荐指数
2
解决办法
9600
查看次数

Google Analytics:跟踪链接点击所需的延迟时间?

我们正在尝试跟踪网页上的各种点击事件,以了解用户如何浏览我们的网站.

可以通过不同的链接到达给定页面(例如,通过原始页面顶部的链接与页脚中的链接).因此,仅仅跟踪加载的目标页面是不够的; 我们需要标记和跟踪点击事件.

Google Analytics 文档建议为"出站链接"的点击添加100毫秒的延迟,以便在加载链接目标之前完成跟踪代码.这是因为_gaq.push(['_trackEvent', category , action])代码是异步的,在卸载页面之前需要时间来完成吗?

如果是这样,"现场"链接是否也不需要这样做?我没有看到这与链接到同一网站上的新页面有何不同; 在这两种情况下,当前页面都被卸载.

编辑:我之后发现了Google hitCallback通过回调触发页面加载事件的机制.这消除了使用延迟的需要.

javascript google-analytics

4
推荐指数
1
解决办法
3343
查看次数