2014-09-21 1 views
1

require.js로로드하는 앱 (각도, d3 등)이 있습니다. Google 애널리틱스와 AdBlock의 EasyPrivacy 목록에 의해 차단 된 일부 스크립트는 종속성 체인에 있습니다. 즉, 사용자가 앱을 사용할 수있게 설정하면 앱이로드되지 않습니다.GA로 요구 사항 종속성 vs. AdBlock EasyPrivacy 목록

스크립트를 최적화하기 위해 스크립트를 최적화하지 않으면 폴백 경로가 있다는 것을 알고 있습니다. 차단 된 경우 폴백하거나 조건에 따라 차단할 수있는 방법이 있습니다. 별도의 구성을로드하면서 스크립트를 최적화하고 랩 할 수 있습니까?

아마 같은 : 종속성으로 GA를로드하는 것을 사용

define(function() { 
    try { 
    var something = require('//path/to/ga'); 
    } catch (e) { 
    return require('fallback'); 
    } 
    return something; 
}); 

?

이 작품이 마음에 드시나요? 내가 누락 된 것이나 더 좋은 방법이 있습니까? AdBlock이 분석을 차단하고 그에 따라로드하는 경우에만 방해 할 수 있습니까?

+0

당신은 조지아에 속하는 개체의 존재를 확인할 수 있습니다 'GoogleAnalyticsObject'나는 생각한다. 또는 'analytics.js'파일이로드되었는지 확인하십시오. – Chaoley

답변

1

너무 오랜 시간이 지난 후에 r.js 설정에서 :empty을 사용하여 알아 냈습니다.

paths: { 
    googleAnalytics: ":empty", 
    ... 
} 

콜백을 포함 main.js에 요구 원본 파일을로드, 그래서 나는 거기에 대체를 추가 할 수 있습니다 ga-fb.js 단지에 window.ga에서 무 조작 기능을 추가하는 스크립트를로드

paths: { 
    googleAnalytics: ['//www.google-analytics.com/analytics', 'ga-fb'], 
    ... 
} 

호출 될 때 오류가 발생하지 않도록하십시오. ga-fb.js은 최적화 된 파일로 접힐 수 없으며 필요한 경우 별도로로드됩니다.

아마도 초급 수준의 문제 일 것입니다.하지만이 문제가 누군가의 문제를 해결하기를 바랍니다. require.js를 사용하는 첫 번째 프로젝트 였으므로 초급 수준의 문제가 발생할 것입니다.

0

당신은 구글을 ​​나열 할 수는 require.js 설정에 paths에 URL을 및 analytics.js : 당신이 구글에서 분석 그냥 직접 호출 액세스해야하는 웹 로그 분석 기능의 내부 그리고

require.config({ 
    paths: { 
    ga: '//www.google-analytics.com/analytics' 
    } 
}); 

, 그리고이 항상 정의되지 않은 반환하는 함수에 window.ga를 할당 오류 기능 :

require(['ga'], function(data) { 
    window.ga('create', 'UA-XXXXXXXX-X'); 
    window.ga('send', 'pageview'); 
}, function() { 
    window.ga = function(){}; 
});