Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozšíření funkcí sady Application Insights JavaScript SDK jsou další funkce, které je možné přidat do sady Application Insights JavaScript SDK, aby se zlepšily její funkce.
V tomto článku se zabýváme plug-inem Click Analytics, který automaticky sleduje události kliknutí na webových stránkách a používá data-*
atributy nebo přizpůsobené značky prvků HTML k vyplnění telemetrických dat o událostech.
Požadavky
Nainstalujte sadu JavaScript SDK před povolením pluginu Click Analytics.
Jaká data modul plug-in shromažďuje?
Při povolení modulu plug-in se ve výchozím nastavení zaznamenávají následující klíčové vlastnosti.
Vlastní vlastnosti události
Název | Popis | Vzorek |
---|---|---|
Název | Název vlastní události. Pro více informací o tom, jak se vyplňuje kolonka jména, se podívejte na sloupec Název. | O nás |
typPoložky | Typ události. | customEvent |
sdkVersion | Verze sady SDK Application Insights spolu s plug-inem pro kliknutí. | JavaScript:2_ClickPlugin2 |
Vlastní dimenze
Název | Popis | Vzorek |
---|---|---|
typ akce | Typ akce, která způsobila událost kliknutí Může to být levé nebo pravé kliknutí. | CL |
základníTypZdroj | Zdroj základního typu vlastní události. | ClickEvent |
Klikněte na souřadnice | Souřadnice, kde se aktivuje událost kliknutí | 659X47 |
obsah | Zástupný symbol pro uložení dodatečných data-* atributů a hodnot. |
[{vzorek1:hledani1, vzorek2:hledani2}] |
název stránky | Název stránky, kde se aktivuje událost kliknutí | Ukázkový název |
ID rodiče | ID nebo název nadřazeného elementu. Další informace o tom, jak se vyplní parentId, najdete v tématu klíč parentId. | navbarContainer |
Vlastní měření
Název | Popis | Vzorek |
---|---|---|
časNaAkci | Doba potřebná v milisekundách, než uživatel klikne na prvek od počátečního načtení stránky. | 87407 |
Přidání modulu plug-in Click Analytics
Uživatelé mohou nastavit plug-in pro automatizovaný sběr Click Analytics pomocí skriptu Web SDK Loader nebo npm a volitelně přidat rozšíření rámce.
Poznámka:
Podpora příjmu instrumentačních klíčů skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.
Přidání kódu
Vložte skript zavaděče sady JavaScript (Web) SDK do horní části každé stránky, na které chcete aktivovat Application Insights.
<script type="text/javascript" src="https://js.monitor.azure.com/scripts/b/ext/ai.clck.2.min.js"></script>
<script type="text/javascript">
var clickPluginInstance = new Microsoft.ApplicationInsights.ClickAnalyticsPlugin();
// Click Analytics configuration
var clickPluginConfig = {
autoCapture : true,
dataTags: {
useDefaultContentNameOrId: true
}
}
// Application Insights configuration
var configObj = {
connectionString: "YOUR_CONNECTION_STRING",
// Alternatively, you can pass in the instrumentation key,
// but support for instrumentation key ingestion will end on March 31, 2025.
// instrumentationKey: "YOUR INSTRUMENTATION KEY",
extensions: [
clickPluginInstance
],
extensionConfig: {
[clickPluginInstance.identifier] : clickPluginConfig
},
};
// Application Insights JavaScript (Web) SDK Loader Script code
!(function (cfg){function e(){cfg.onInit&&cfg.onInit(n)}var x,w,D,t,E,n,C=window,O=document,b=C.location,q="script",I="ingestionendpoint",L="disableExceptionTracking",j="ai.device.";"instrumentationKey"[x="toLowerCase"](),w="crossOrigin",D="POST",t="appInsightsSDK",E=cfg.name||"appInsights",(cfg.name||C[t])&&(C[t]=E),n=C[E]||function(g){var f=!1,m=!1,h={initialize:!0,queue:[],sv:"8",version:2,config:g};function v(e,t){var n={},i="Browser";function a(e){e=""+e;return 1===e.length?"0"+e:e}return n[j+"id"]=i[x](),n[j+"type"]=i,n["ai.operation.name"]=b&&b.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(h.sv||h.version),{time:(i=new Date).getUTCFullYear()+"-"+a(1+i.getUTCMonth())+"-"+a(i.getUTCDate())+"T"+a(i.getUTCHours())+":"+a(i.getUTCMinutes())+":"+a(i.getUTCSeconds())+"."+(i.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z",iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}},ver:undefined,seq:"1",aiDataContract:undefined}}var n,i,t,a,y=-1,T=0,S=["js.monitor.azure.com","js.cdn.applicationinsights.io","js.cdn.monitor.azure.com","js0.cdn.applicationinsights.io","js0.cdn.monitor.azure.com","js2.cdn.applicationinsights.io","js2.cdn.monitor.azure.com","az416426.vo.msecnd.net"],o=g.url||cfg.src,r=function(){return s(o,null)};function s(d,t){if((n=navigator)&&(~(n=(n.userAgent||"").toLowerCase()).indexOf("msie")||~n.indexOf("trident/"))&&~d.indexOf("ai.3")&&(d=d.replace(/(\/)(ai\.3\.)([^\d]*)$/,function(e,t,n){return t+"ai.2"+n})),!1!==cfg.cr)for(var e=0;e<S.length;e++)if(0<d.indexOf(S[e])){y=e;break}var n,i=function(e){var a,t,n,i,o,r,s,c,u,l;h.queue=[],m||(0<=y&&T+1<S.length?(a=(y+T+1)%S.length,p(d.replace(/^(.*\/\/)([\w\.]*)(\/.*)$/,function(e,t,n,i){return t+S[a]+i})),T+=1):(f=m=!0,s=d,!0!==cfg.dle&&(c=(t=function(){var e,t={},n=g.connectionString;if(n)for(var i=n.split(";"),a=0;a<i.length;a++){var o=i[a].split("=");2===o.length&&(t[o[0][x]()]=o[1])}return t[I]||(e=(n=t.endpointsuffix)?t.location:null,t[I]="https://"+(e?e+".":"")+"dc."+(n||"services.visualstudio.com")),t}()).instrumentationkey||g.instrumentationKey||"",t=(t=(t=t[I])&&"/"===t.slice(-1)?t.slice(0,-1):t)?t+"/v2/track":g.endpointUrl,t=g.userOverrideEndpointUrl||t,(n=[]).push((i="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",o=s,u=t,(l=(r=v(c,"Exception")).data).baseType="ExceptionData",l.baseData.exceptions=[{typeName:"SDKLoadFailed",message:i.replace(/\./g,"-"),hasFullStack:!1,stack:i+"\nSnippet failed to load ["+o+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(b&&b.pathname||"_unknown_")+"\nEndpoint: "+u,parsedStack:[]}],r)),n.push((l=s,i=t,(u=(o=v(c,"Message")).data).baseType="MessageData",(r=u.baseData).message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+l+")").replace(/\"/g,"")+'"',r.properties={endpoint:i},o)),s=n,c=t,JSON&&((u=C.fetch)&&!cfg.useXhr?u(c,{method:D,body:JSON.stringify(s),mode:"cors"}):XMLHttpRequest&&((l=new XMLHttpRequest).open(D,c),l.setRequestHeader("Content-type","application/json"),l.send(JSON.stringify(s)))))))},a=function(e,t){m||setTimeout(function(){!t&&h.core||i()},500),f=!1},p=function(e){var n=O.createElement(q),e=(n.src=e,t&&(n.integrity=t),n.setAttribute("data-ai-name",E),cfg[w]);return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=a,n.onerror=i,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||a(0,t)},cfg.ld&&cfg.ld<0?O.getElementsByTagName("head")[0].appendChild(n):setTimeout(function(){O.getElementsByTagName(q)[0].parentNode.appendChild(n)},cfg.ld||0),n};p(d)}cfg.sri&&(n=o.match(/^((http[s]?:\/\/.*\/)\w+(\.\d+){1,5})\.(([\w]+\.){0,2}js)$/))&&6===n.length?(d="".concat(n[1],".integrity.json"),i="@".concat(n[4]),l=window.fetch,t=function(e){if(!e.ext||!e.ext[i]||!e.ext[i].file)throw Error("Error Loading JSON response");var t=e.ext[i].integrity||null;s(o=n[2]+e.ext[i].file,t)},l&&!cfg.useXhr?l(d,{method:"GET",mode:"cors"}).then(function(e){return e.json()["catch"](function(){return{}})}).then(t)["catch"](r):XMLHttpRequest&&((a=new XMLHttpRequest).open("GET",d),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE)if(200===a.status)try{t(JSON.parse(a.responseText))}catch(e){r()}else r()},a.send())):o&&r();try{h.cookie=O.cookie}catch(k){}function e(e){for(;e.length;)!function(t){h[t]=function(){var e=arguments;f||h.queue.push(function(){h[t].apply(h,e)})}}(e.pop())}var c,u,l="track",d="TrackPage",p="TrackEvent",l=(e([l+"Event",l+"PageView",l+"Exception",l+"Trace",l+"DependencyData",l+"Metric",l+"PageViewPerformance","start"+d,"stop"+d,"start"+p,"stop"+p,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),h.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4},(g.extensionConfig||{}).ApplicationInsightsAnalytics||{});return!0!==g[L]&&!0!==l[L]&&(e(["_"+(c="onerror")]),u=C[c],C[c]=function(e,t,n,i,a){var o=u&&u(e,t,n,i,a);return!0!==o&&h["_"+c]({message:e,url:t,lineNumber:n,columnNumber:i,error:a,evt:C.event}),o},g.autoExceptionInstrumented=!0),h}(cfg.cfg),(C[E]=n).queue&&0===n.queue.length?(n.queue.push(e),n.trackPageView({})):e();})({
src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
crossOrigin: "anonymous",
// sri: false, // Custom optional value to specify whether fetching the snippet from integrity file and do integrity check
cfg: configObj // configObj is defined above.
});
</script>
Chcete-li přidat nebo aktualizovat konfiguraci nahrávače skriptu JavaScript (Web) SDK, viz Konfiguraci skriptu nahrávače JavaScript (Web) SDK.
Návod
Pokud chcete přidat rozšíření architektury nebo už jste ho přidali, podívejte se na ukázky kódu React, React Native a Angular, kde se dozvíte, jak přidat modul plug-in Click Analytics.
(Volitelné) Nastavení kontextu ověřeného uživatele
Pokud chcete nastavit toto volitelné nastavení, přečtěte si téma Nastavení kontextu ověřeného uživatele.
Pokud používáte sešit HEART s modulem plug-in Click Analytics, nemusíte pro zobrazení telemetrických dat nastavit kontext ověřeného uživatele. Další informace najdete v dokumentaci k sešitu HEART.
Použijte plug-in
Následující části popisují, jak modul plug-in používat.
Úložiště telemetrických dat
Telemetrická data generovaná z událostí kliknutí se ukládají jako customEvents
v části Protokoly Application Insights > na webu Azure Portal>.
name
Sloupec name
tabulky customEvent
je vyplněn podle následujících pravidel:
- Pokud
customDataPrefix
není deklarován v rozšířené konfiguraci,id
použije se jako název zadaný vdata-id
souborucustomEvent
. - Je-li
customDataPrefix
deklarován, zadanáid
vdata-*-id
se, což znamená, že musí začínatdata
a končitid
, použije jako názevcustomEvent
. Pokud například klikaný element HTML má atribut"data-sample-id"="button1"
, pak"button1"
jecustomEvent
název. -
data-id
nebodata-*-id
Pokud atribut neexistuje a pokuduseDefaultContentNameOrId
je nastaven natrue
, atribut HTMLid
nebo název obsahu elementu se použije jakocustomEvent
název. Pokud jsou přítomny obojí,id
i název obsahu, přednost máid
. - Pokud
useDefaultContentNameOrId
jefalse
,customEvent
název je"not_specified"
. Doporučujeme nastavituseDefaultContentNameOrId
natrue
pro generování smysluplných dat.
contentName
Pokud máte funkci zpětného volání definovanou v pokročilé konfiguraci, sloupec contentName
se vyplní na základě následujících pravidel:
U klikaného elementu HTML
<a>
se modul plug-in pokusí shromáždit hodnotu jeho innerText (text) atributu. Pokud modul plug-in nemůže najít tento atribut, pokusí se shromáždit hodnotu jeho innerHtml atributu.U klikaného html
<img>
nebo<area>
elementu modul plug-in shromažďuje hodnotu jehoalt
atributu.Pro všechny ostatní kliknuté HTML elementy se
contentName
vyplní na základě následujících pravidel, která jsou uvedena v pořadí podle priority:- Hodnota atributu
value
elementu - Hodnota atributu
name
elementu - Hodnota atributu
alt
elementu - Hodnota innerText atributu elementu
- Hodnota atributu
id
elementu
- Hodnota atributu
parentId
klíč
Pokud chcete naplnit klíč parentId
v rámci customDimensions
customEvent
tabulky v protokolech, deklarujte značku parentDataTag
nebo definujte atribut data-parentid
.
Hodnota parentId
se načte na základě následujících pravidel:
- Když deklarujete
parentDataTag
, modul plug-in načte hodnotuid
nebodata-*-id
definovanou v rámci prvku, který je nejblíže k klikaného prvku jakoparentId
. - Pokud jsou definovány
data-*-id
iid
,data-*-id
má prioritu. - Pokud
parentDataTag
je definován, ale modul plug-in nemůže najít tuto značku ve stromu DOM, modul plug-in použijeid
nebodata-*-id
definovaný v rámci elementu, který je nejblíže ke klikaným elementu jakoparentId
. Doporučujeme však definovatdata-{parentDataTag}
nebocustomDataPrefix-{parentDataTag}
atribut, aby se snížil počet smyček potřebných k nalezeníparentId
.parentDataTag
Deklarace je užitečná, když potřebujete použít modul plug-in s přizpůsobenými možnostmi. - Pokud není definována žádná
parentDataTag
hodnota a aktuální prvek neobsahuje žádnéparentId
informace, žádnáparentId
hodnota se neshromažďuje. - Je-li
parentDataTag
definován, je nastavena nauseDefaultContentNameOrId
, a pouze atributfalse
je definován uvnitř elementu nejblíže kliknutému elementu,id
je naplněn jakoparentId
. Pro načtení hodnotyid
nastavteuseDefaultContentNameOrId
natrue
.
Když definujete atribut data-parentid
nebo data-*-parentid
, plug-in načte instanci tohoto atributu, která je nejblíže kliknutému prvku, včetně samotného prvku, pokud je to možné.
Pokud deklarujete parentDataTag
a definujete atribut data-parentid
nebo data-*-parentid
, přednost je dána data-parentid
nebo data-*-parentid
.
Pokud se zobrazí upozornění na telemetrii "Click Event rows with no parentId value" (řádky událostí bez hodnoty parentId), podívejte se na Oprava upozornění řádků událostí bez rodičovské hodnoty parentId.
Příklady ukazující, která hodnota se načte jako parentId
pro různé konfigurace, najdete v tématu Příklady parentid
klíče.
Upozornění
- Jakmile
parentDataTag
je součástí libovolného elementu HTML v celé aplikaci, SDK začne hledat nadřazené značky v celé aplikaci, nejenom v elementu HTML, ve kterém jste ho použili. - Pokud používáte sešit HEART s modulem plug-in Click Analytics, aby se události HEART zaznamenávaly nebo detekovaly, musí být značka
parentDataTag
deklarována ve všech ostatních částech aplikace koncového uživatele.
customDataPrefix
Možnost customDataPrefix
v pokročilé konfiguraci poskytuje uživateli možnost konfigurovat předponu datového atributu, která pomáhá identifikovat, kde se nachází srdce v rámci základu kódu jednotlivce. Předpona musí být vždy malá písmena a začínat na data-
. Příklad:
data-heart-
data-team-name-
data-example-
V HTML jsou data-*
globální atributy označovány jako vlastní datové atributy, které umožňují výměnu vlastních informací mezi HTML a jeho reprezentací DOM pomocí skriptů. Starší prohlížeče, jako jsou Internet Explorer a Safari, ignorují atributy, kterým nerozumí, pokud nezačínají na data-
.
Hvězdičku (*
) v data-*
můžete nahradit libovolným názvem podle produkčních pravidel pro názvy XML s následujícími omezeními.
- Název nesmí začínat písmeny "xml", a to bez ohledu na velikost písmen.
- Název nesmí obsahovat středník (U+003A).
- Název nesmí obsahovat velká písmena.
Přidání rozšířené konfigurace
Název | Typ | Výchozí | Popis |
---|---|---|---|
automatické zachycení | Booleovská hodnota | Pravda | Automatická konfigurace zachytávání |
zpětné volání | IValueCallback | Nula | Konfigurace pro zpětné volání |
pageTags | Objekt | Nula | Značky stránek |
datové štítky | ICustomDataTags | Nula | Vlastní datové značky poskytnuté k přepsání výchozích značek používaných k zaznamenání kliknutí. |
urlCollectHash | Booleovská hodnota | Nepravda | Povolí protokolování hodnot za znakem "#" adresy URL. |
dotaz na sběr URL | Booleovská hodnota | Nepravda | Povolení protokolování řetězce dotazu v adrese URL. |
validátor chování | Funkce | Nula | Funkce zpětného data-*-bhvr volání, která se má použít pro ověření hodnoty. Další informace najdete v části behaviorValidator. |
defaultní chování po kliknutí pravým tlačítkem | Řetězec nebo číslo | '' | Výchozí hodnota chování, když došlo k události kliknutí pravým tlačítkem myši. Tato hodnota je přepsána, pokud má prvek atribut data-*-bhvr . |
odstranitNeplatnéUdálosti | Booleovská hodnota | Nepravda | Označit události k vyřazení, které nemají užitečná data o kliknutí. |
IValueCallback
Název | Typ | Výchozí | Popis |
---|---|---|---|
název stránky | Funkce | Nula | Funkce, která přepíše výchozí pageName chování při zachytávání. |
StránkováAkceStránkovéŠtítky | Funkce | Nula | Funkce zpětného volání pro rozšíření výchozího pageTags shromážděného během pageAction události. |
název obsahu | Funkce | Nula | Funkce zpětného volání pro naplnění přizpůsobených contentName . |
Vlastní datové značky
Název | Typ | Výchozí | Výchozí značka, která se má použít v HTML | Popis |
---|---|---|---|---|
useDefaultContentNameOrId | Booleovská hodnota | Nepravda | Není k dispozici | Pokud true , shromažďuje standardní html atribut id pro contentName , pokud určitý prvek není označený výchozí předponou dat nebo customDataPrefix . Jinak se neshromažďuje standardní HTML atribut id pro contentName . |
customDataPrefix | Řetězec | data- |
data-* |
Automatické zachycení názvu obsahu a hodnoty prvků, které jsou označené zadanou předponou. Lze například data-*-id data-<yourcustomattribute> použít ve značkách HTML. |
aiBlobAttributeTag | Řetězec | ai-blob |
data-ai-blob |
Modul plug-in podporuje atribut objektu blob JSON místo jednotlivých data-* atributů. |
předpona metaúdajů | Řetězec | Nula | Není k dispozici | Automatické zachycení názvu a obsahu meta elementu HTML Head s danou předponou při zachycení.
custom- Například lze použít v metaznačku HTML. |
captureAllMetaDataContent | Booleovská hodnota | Nepravda | Není k dispozici | Automaticky zachyťte všechny názvy a obsah meta elementů HTML Head. Výchozí hodnota je False. Pokud je tato možnost povolená, přepíše zadanou možnost metaDataPrefix . |
parentDataTag | Řetězec | Nula | Není k dispozici | Načte parentId v protokolech, pokud není nalezen data-parentid nebo data-*-parentid . Z důvodu efektivity přestane procházet po DOM, aby zachytil název obsahu a hodnotu prvků, když dojde k výskytu atributu data-{parentDataTag} nebo customDataPrefix-{parentDataTag} . Další informace najdete v části klíč parentId. |
dntDataTag | Řetězec | ai-dnt |
data-ai-dnt |
Modul plug-in pro zachytávání telemetrických dat ignoruje elementy HTML s tímto atributem. |
validátor chování
Funkce behaviorValidator
automaticky kontrolují, že označené chování v kódu odpovídá předdefinovanému seznamu. Funkce zajišťují, aby označené chování bylo konzistentní se zavedenou taxonomií vaší organizace. Nevyžaduje se ani neočekává, že většina zákazníků azure Monitoru tyto funkce používá, ale jsou k dispozici pro pokročilé scénáře. Funkce behaviorValidator vám můžou pomoct s přístupnějšími postupy.
Chování se zobrazí v poli customDimensions v tabulce CustomEvents.
Funkce zpětného volání
V rámci tohoto rozšíření jsou zpřístupněny tři různé behaviorValidator
funkce zpětného volání. Pokud vystavené funkce nevyřeší váš požadavek, můžete také použít vlastní funkce zpětného volání. Záměrem je přinést vlastní datovou strukturu chování. Modul plug-in používá tuto funkci validátoru při extrahování chování ze značek dat.
Název | Popis |
---|---|
Validator hodnoty chování | Tuto funkci zpětného volání použijte, pokud je datová struktura vašeho chování polem řetězců. |
Validátor mapování chování | Tuto funkci zpětného volání použijte, pokud je datová struktura vašeho chování slovníkem. |
BehaviorEnumValidator | Použijte tuto funkci zpětného volání, pokud je datová struktura vašeho chování typu enumerace. |
Předání řetězcových vs. číselných hodnot
Pokud chcete snížit počet bajtů, které předáte, předejte místo celého textového řetězce číselnou hodnotu. Pokud nejsou náklady problém, můžete vložit celý textový řetězec (například NAVIGATIONBACK).
Ukázkové použití s využitím behaviorValidatoru
Tady je ukázka toho, jak může vypadat validátor mapy chování. Vaše řešení může vypadat jinak v závislosti na taxonomii vaší organizace a na shromažďovaných událostech.
var clickPlugin = Microsoft.ApplicationInsights.ClickAnalyticsPlugin;
var clickPluginInstance = new clickPlugin();
// Behavior enum values
var behaviorMap = {
UNDEFINED: 0, // default, Undefined
///////////////////////////////////////////////////////////////////////////////////////////////////
// Page Experience [1-19]
///////////////////////////////////////////////////////////////////////////////////////////////////
NAVIGATIONBACK: 1, // Advancing to the previous index position within a webpage
NAVIGATION: 2, // Advancing to a specific index position within a webpage
NAVIGATIONFORWARD: 3, // Advancing to the next index position within a webpage
APPLY: 4, // Applying filter(s) or making selections
REMOVE: 5, // Applying filter(s) or removing selections
SORT: 6, // Sorting content
EXPAND: 7, // Expanding content or content container
REDUCE: 8, // Sorting content
CONTEXTMENU: 9, // Context menu
TAB: 10, // Tab control
COPY: 11, // Copy the contents of a page
EXPERIMENTATION: 12, // Used to identify a third-party experimentation event
PRINT: 13, // User printed page
SHOW: 14, // Displaying an overlay
HIDE: 15, // Hiding an overlay
MAXIMIZE: 16, // Maximizing an overlay
MINIMIZE: 17, // Minimizing an overlay
BACKBUTTON: 18, // Clicking the back button
///////////////////////////////////////////////////////////////////////////////////////////////////
// Scenario Process [20-39]
///////////////////////////////////////////////////////////////////////////////////////////////////
STARTPROCESS: 20, // Initiate a web process unique to adopter
PROCESSCHECKPOINT: 21, // Represents a checkpoint in a web process unique to adopter
COMPLETEPROCESS: 22, // Page Actions that complete a web process unique to adopter
SCENARIOCANCEL: 23, // Actions resulting from cancelling a process/scenario
///////////////////////////////////////////////////////////////////////////////////////////////////
// Download [40-59]
///////////////////////////////////////////////////////////////////////////////////////////////////
DOWNLOADCOMMIT: 40, // Initiating an unmeasurable off-network download
DOWNLOAD: 41, // Initiating a download
///////////////////////////////////////////////////////////////////////////////////////////////////
// Search [60-79]
///////////////////////////////////////////////////////////////////////////////////////////////////
SEARCHAUTOCOMPLETE: 60, // Auto-completing a search query during user input
SEARCH: 61, // Submitting a search query
SEARCHINITIATE: 62, // Initiating a search query
TEXTBOXINPUT: 63, // Typing or entering text in the text box
///////////////////////////////////////////////////////////////////////////////////////////////////
// Commerce [80-99]
///////////////////////////////////////////////////////////////////////////////////////////////////
VIEWCART: 82, // Viewing the cart
ADDWISHLIST: 83, // Adding a physical or digital good or services to a wishlist
FINDSTORE: 84, // Finding a physical store
CHECKOUT: 85, // Before you fill in credit card info
REMOVEFROMCART: 86, // Remove an item from the cart
PURCHASECOMPLETE: 87, // Used to track the pageView event that happens when the CongratsPage or Thank You page loads after a successful purchase
VIEWCHECKOUTPAGE: 88, // View the checkout page
VIEWCARTPAGE: 89, // View the cart page
VIEWPDP: 90, // View a PDP
UPDATEITEMQUANTITY: 91, // Update an item's quantity
INTENTTOBUY: 92, // User has the intent to buy an item
PUSHTOINSTALL: 93, // User has selected the push to install option
///////////////////////////////////////////////////////////////////////////////////////////////////
// Authentication [100-119]
///////////////////////////////////////////////////////////////////////////////////////////////////
SIGNIN: 100, // User sign-in
SIGNOUT: 101, // User sign-out
///////////////////////////////////////////////////////////////////////////////////////////////////
// Social [120-139]
///////////////////////////////////////////////////////////////////////////////////////////////////
SOCIALSHARE: 120, // "Sharing" content for a specific social channel
SOCIALLIKE: 121, // "Liking" content for a specific social channel
SOCIALREPLY: 122, // "Replying" content for a specific social channel
CALL: 123, // Click on a "call" link
EMAIL: 124, // Click on an "email" link
COMMUNITY: 125, // Click on a "community" link
///////////////////////////////////////////////////////////////////////////////////////////////////
// Feedback [140-159]
///////////////////////////////////////////////////////////////////////////////////////////////////
VOTE: 140, // Rating content or voting for content
SURVEYCHECKPOINT: 145, // Reaching the survey page/form
///////////////////////////////////////////////////////////////////////////////////////////////////
// Registration, Contact [160-179]
///////////////////////////////////////////////////////////////////////////////////////////////////
REGISTRATIONINITIATE: 161, // Initiating a registration process
REGISTRATIONCOMPLETE: 162, // Completing a registration process
CANCELSUBSCRIPTION: 163, // Canceling a subscription
RENEWSUBSCRIPTION: 164, // Renewing a subscription
CHANGESUBSCRIPTION: 165, // Changing a subscription
REGISTRATIONCHECKPOINT: 166, // Reaching the registration page/form
///////////////////////////////////////////////////////////////////////////////////////////////////
// Chat [180-199]
///////////////////////////////////////////////////////////////////////////////////////////////////
CHATINITIATE: 180, // Initiating a chat experience
CHATEND: 181, // Ending a chat experience
///////////////////////////////////////////////////////////////////////////////////////////////////
// Trial [200-209]
///////////////////////////////////////////////////////////////////////////////////////////////////
TRIALSIGNUP: 200, // Signing up for a trial
TRIALINITIATE: 201, // Initiating a trial
///////////////////////////////////////////////////////////////////////////////////////////////////
// Signup [210-219]
///////////////////////////////////////////////////////////////////////////////////////////////////
SIGNUP: 210, // Signing up for a notification or service
FREESIGNUP: 211, // Signing up for a free service
///////////////////////////////////////////////////////////////////////////////////////////////////
// Referrals [220-229]
///////////////////////////////////////////////////////////////////////////////////////////////////
PARTNERREFERRAL: 220, // Navigating to a partner's web property
///////////////////////////////////////////////////////////////////////////////////////////////////
// Intents [230-239]
///////////////////////////////////////////////////////////////////////////////////////////////////
LEARNLOWFUNNEL: 230, // Engaging in learning behavior on a commerce page (for example, "Learn more click")
LEARNHIGHFUNNEL: 231, // Engaging in learning behavior on a non-commerce page (for example, "Learn more click")
SHOPPINGINTENT: 232, // Shopping behavior prior to landing on a commerce page
///////////////////////////////////////////////////////////////////////////////////////////////////
// Video [240-259]
///////////////////////////////////////////////////////////////////////////////////////////////////
VIDEOSTART: 240, // Initiating a video
VIDEOPAUSE: 241, // Pausing a video
VIDEOCONTINUE: 242, // Pausing or resuming a video
VIDEOCHECKPOINT: 243, // Capturing predetermined video percentage complete
VIDEOJUMP: 244, // Jumping to a new video location
VIDEOCOMPLETE: 245, // Completing a video (or % proxy)
VIDEOBUFFERING: 246, // Capturing a video buffer event
VIDEOERROR: 247, // Capturing a video error
VIDEOMUTE: 248, // Muting a video
VIDEOUNMUTE: 249, // Unmuting a video
VIDEOFULLSCREEN: 250, // Making a video full screen
VIDEOUNFULLSCREEN: 251, // Making a video return from full screen to original size
VIDEOREPLAY: 252, // Making a video replay
VIDEOPLAYERLOAD: 253, // Loading the video player
VIDEOPLAYERCLICK: 254, // Click on a button within the interactive player
VIDEOVOLUMECONTROL: 255, // Click on video volume control
VIDEOAUDIOTRACKCONTROL: 256, // Click on audio control within a video
VIDEOCLOSEDCAPTIONCONTROL: 257, // Click on the closed-caption control
VIDEOCLOSEDCAPTIONSTYLE: 258, // Click to change closed-caption style
VIDEORESOLUTIONCONTROL: 259, // Click to change resolution
///////////////////////////////////////////////////////////////////////////////////////////////////
// Advertisement Engagement [280-299]
///////////////////////////////////////////////////////////////////////////////////////////////////
ADBUFFERING: 283, // Ad is buffering
ADERROR: 284, // Ad error
ADSTART: 285, // Ad start
ADCOMPLETE: 286, // Ad complete
ADSKIP: 287, // Ad skipped
ADTIMEOUT: 288, // Ad timed out
OTHER: 300 // Other
};
// Application Insights Configuration
var configObj = {
connectionString: "YOUR_CONNECTION_STRING",
// Alternatively, you can pass in the instrumentation key,
// but support for instrumentation key ingestion will end on March 31, 2025.
// instrumentationKey: "YOUR INSTRUMENTATION KEY",
extensions: [clickPluginInstance],
extensionConfig: {
[clickPluginInstance.identifier]: {
behaviorValidator: Microsoft.ApplicationInsights.BehaviorMapValidator(behaviorMap),
defaultRightClickBhvr: 9
},
},
};
var appInsights = new Microsoft.ApplicationInsights.ApplicationInsights({
config: configObj
});
appInsights.loadAppInsights();
Ukázková aplikace
Podívejte se na jednoduchou webovou aplikaci s povoleným modulem plug-in Autocollection Click Analytics pro implementaci vlastních vlastností událostí, jako jsou Name
a parentid
, a také vlastního chování a obsahu. Informace o tom, kde najít data pro kliknutí, najdete v souboru readme ukázkové aplikace.
parentId
Příklady klíče
Následující příklady ukazují, která hodnota se načte jako parentId
pro různé konfigurace.
Příklady ukazují, že pokud je parentDataTag
definován, ale zásuvný modul nemůže tuto značku najít ve stromě DOM, použije id
nejbližšího nadřazeného prvku.
Příklad 1
V příkladu 1 parentDataTag
není deklarován a data-parentid
ani data-*-parentid
není definován v žádném prvku. Tento příklad ukazuje konfiguraci, kde se neshromažďuje hodnota parentId
.
export const clickPluginConfigWithUseDefaultContentNameOrId = {
dataTags : {
customDataPrefix: "",
parentDataTag: "",
dntDataTag: "ai-dnt",
captureAllMetaDataContent:false,
useDefaultContentNameOrId: true,
autoCapture: true
},
};
<div className="test1" data-id="test1parent">
<div>Test1</div>
<div>with id, data-id, parent data-id defined</div>
<Button id="id1" data-id="test1id" variant="info" onClick={trackEvent}>Test1</Button>
</div>
Pro klikaný prvek <Button>
hodnota parentId
je not_specified
, protože nejsou definovány žádné parentDataTag
podrobnosti a v aktuálním prvku není k dispozici žádné ID nadřazeného elementu.
Příklad 2
V příkladu 2 parentDataTag
se deklaruje a data-parentid
definuje. Tento příklad ukazuje, jak se shromažďují podrobnosti ID rodiče.
export const clickPluginConfigWithParentDataTag = {
dataTags : {
customDataPrefix: "",
parentDataTag: "group",
ntDataTag: "ai-dnt",
captureAllMetaDataContent:false,
useDefaultContentNameOrId: false,
autoCapture: true
},
};
<div className="test2" data-group="buttongroup1" data-id="test2parent">
<div>Test2</div>
<div>with data-id, parentid, parent data-id defined</div>
<Button data-id="test2id" data-parentid = "parentid2" variant="info" onClick={trackEvent}>Test2</Button>
</div>
Pro klikaný prvek <Button>
, je hodnota parentId
parentid2
. I když parentDataTag
je deklarován, data-parentid
je přímo definován v rámci elementu. Proto má tato hodnota přednost před všemi ostatními nadřazenými ID nebo podrobnostmi ID definovanými v nadřazených prvcích.
Příklad 3
V příkladu 3 parentDataTag
je deklarován a data-parentid
data-*-parentid
atribut není definován. Tento příklad ukazuje, jak může být deklarování parentDataTag
užitečné pro shromáždění hodnoty pro parentId
pro případy, kdy dynamické prvky nemají id
nebo data-*-id
.
export const clickPluginConfigWithParentDataTag = {
dataTags : {
customDataPrefix: "",
parentDataTag: "group",
dntDataTag: "ai-dnt",
captureAllMetaDataContent:false,
useDefaultContentNameOrId: false,
autoCapture: true
},
};
<div className="test6" data-group="buttongroup1" data-id="test6grandparent">
<div>Test6</div>
<div>with data-id, grandparent data-group defined, parent data-id defined</div>
<div data-id="test6parent">
<Button data-id="test6id" variant="info" onClick={trackEvent}>Test6</Button>
</div>
</div>
Pro kliknutý prvek <Button>
je hodnota parentId
test6parent
, protože parentDataTag
je deklarován. Tato deklarace umožňuje plug-inu procházet aktuálním stromem prvků, a proto se ID jeho nejbližšího nadřazeného prvku použije, pokud nejsou detaily nadřazeného ID přímo poskytnuty v aktuálním prvku. S definovaným data-group="buttongroup1"
modulem plug-in zjistí parentId
efektivněji.
Pokud atribut odeberete data-group="buttongroup1"
, hodnota parentId
je stále test6parent
, protože parentDataTag
je stále deklarována.
Řešení problému
Projděte si vyhrazený článek o řešení potíží.
Další kroky
- Ověřte, že data proudí.
- Podívejte se do dokumentace k využití sešitu HEART pro rozšířené analýzy produktů.
- Viz úložiště GitHub a balíček npm pro plug-in Click Analytics Autocollection.
- Použijte analýzu událostí v uživatelském prostředí Využití k analýze nejčastějších kliknutí a segmentaci podle dostupných dimenzí.
- Pokud neznáte proces zápisu dotazu, podívejte se na Log Analytics .
- Vytvořte sešit nebo export do Power BI a vytvořte vlastní vizualizace dat kliknutím.