Povolení modulu plug-in Auto-Collection click Analytics
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 modulem plug-in 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 naplnění telemetrie událostí.
Požadavky
Před povolením modulu plug-in Click Analytics nainstalujte sadu JavaScript SDK .
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. Další informace o tom, jak se název naplní, najdete ve sloupci Název. | Informace |
itemType | Typ události. | customEvent |
sdkVersion | Verze sady Application Insights SDK spolu s modulem plug-in klikněte. | JavaScript:2_ClickPlugin2 |
Vlastní dimenze
Název | Popis | Vzorek |
---|---|---|
actionType | Typ akce, která způsobila událost kliknutí Může to být levý nebo pravým tlačítkem myši. | CL |
baseTypeSource | Zdroj základního typu vlastní události. | ClickEvent |
ClickCoordinates | Souřadnice, kde se aktivuje událost kliknutí | 659X47 |
content | Zástupný symbol pro uložení dalších data-* atributů a hodnot |
[{sample1:value1, sample2:value2}] |
pageName | Název stránky, kde se aktivuje událost kliknutí | Ukázkový název |
parentId | 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 |
---|---|---|
timeToAction | 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é můžou modul plug-in Auto-Collection Click Analytics nastavit pomocí skriptu zavaděče sady JavaScript (Web) SDK nebo npm a volitelně přidat rozšíření architektury.
Poznámka:
Podpora příjmu dat založeného na instrumentačním klíči 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
Do horní části každé stránky, pro kterou chcete povolit Application Insights, vložte skript zavaděče sady JavaScript (Web) SDK.
<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>
Pokud chcete přidat nebo aktualizovat konfiguraci skriptů zavaděče sady JavaScript (Web) SDK, přečtěte si téma Konfigurace skriptů zavaděče sady JavaScript (Web).
Tip
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žití modulu 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
se customEvent
vyplní na základě 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, zadanouid
vdata-*-id
sadě , což znamená, že musí začínatdata
a končitid
, se použije jakocustomEvent
název. Pokud například klikaný element HTML má atribut"data-sample-id"="button1"
, pak"button1"
jecustomEvent
název. data-id
data-*-id
Pokud atribut neexistuje a pokuduseDefaultContentNameOrId
je nastaven natrue
, atribut HTMLid
nebo název obsahu clicked elementu se použije jakocustomEvent
název. Pokud je k dispozici názevid
obsahu i název obsahu, předáid
se přednost .- Pokud
useDefaultContentNameOrId
jefalse
,customEvent
název je"not_specified"
. Doporučujeme nastavituseDefaultContentNameOrId
protrue
generování smysluplných dat.
contentName
Pokud máte funkci zpětnéhocontentName
volání v pokročilé konfiguraci definovanou, contentName
sloupec customEvent
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í klikané elementy
contentName
HTML se 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 parentId
klíč v tabulce customDimensions
customEvent
v protokolech, deklarujte značku parentDataTag
nebo definujte data-parentid
atribut.
Hodnota se parentId
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 obě
data-*-id
aid
jsou definovány, priorita je předánadata-*-id
. - 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 definována,
useDefaultContentNameOrId
je nastavena nafalse
a pouzeid
atribut je definován v rámci elementu nejblíže clicked element,parentId
naplní jako"not_specified"
.parentDataTag
Načtení hodnoty parametruid
, nastavenouseDefaultContentNameOrId
natrue
hodnotu .
Když definujete data-parentid
nebo data-*-parentid
atribut, modul plug-in načte instanci tohoto atributu, která je nejblíže clicked elementu, včetně v případě, že je to možné.
Pokud deklarujete parentDataTag
a definujete data-parentid
atribut data-*-parentid
, priorita je udělena data-parentid
nebo data-*-parentid
.
Pokud se zobrazí upozornění na telemetrii "Click Event rows with no parentId value" (Kliknout na řádky událostí bez hodnoty parentId), podívejte se na upozornění "Click Event rows with no parentId value" (Kliknout na řádky událostí bez 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 , sada SDK začne hledat nadřazené značky v celé aplikaci , a ne jenom element 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 drop atributy, které nerozumí, pokud nezačínají data-
.
Hvězdičku (*
) můžete data-*
nahradit libovolným názvem za produkčním pravidlem názvů XML následujícími omezeními.
- Název nesmí začínat písmeny xml, a to bez ohledu na to, co se pro písmena používá.
- Název nesmí obsahovat středník (U+003A).
- Název nesmí obsahovat velká písmena.
Přidání rozšířené konfigurace
Name | Type | Výchozí | Popis |
---|---|---|---|
autoCapture | Logická hodnota | True | Automatická konfigurace zachytávání |
zpětné volání | IValueCallback | Null | Konfigurace zpětného volání |
pageTags | Objekt | Null | Značky stránek |
dataTags | ICustomDataTags | Null | Vlastní datové značky poskytnuté k přepsání výchozích značek používaných k zaznamenání dat kliknutím. |
urlCollectHash | Logický | False | Povolí protokolování hodnot za znakem "#" adresy URL. |
urlCollectQuery | Logický | False | Povolí protokolování řetězce dotazu adresy URL. |
behaviorValidator | Function | Null | Funkce zpětného data-*-bhvr volání, která se má použít pro ověření hodnoty. Další informace najdete v části behaviorValidator. |
defaultRightClickBhvr | Ř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 prvek má data-*-bhvr atribut. |
dropInvalidEvents | Logický | False | Označení příznakem pro vyřazení událostí, které nemají užitečná data kliknutí. |
IValueCallback
Name | Type | Výchozí | Popis |
---|---|---|---|
pageName | Function | Null | Funkce, která přepíše výchozí pageName chování při zachytávání. |
pageActionPageTags | Function | Null | Funkce zpětného volání pro rozšíření výchozího nastavení pageTags shromažďovaného pageAction během události. |
contentName | Function | Null | Funkce zpětného volání pro naplnění přizpůsobených contentName funkcí . |
ICustomDataTags
Name | Type | Výchozí | Výchozí značka, která se má použít v HTML | Popis |
---|---|---|---|---|
useDefaultContentNameOrId | Logický | False | – | 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í atribut id contentName HTML. |
customDataPrefix | String | 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 | String | ai-blob |
data-ai-blob |
Modul plug-in podporuje atribut objektu blob JSON místo jednotlivých data-* atributů. |
metaDataPrefix | String | Null | – | Automatické zachycení názvu meta elementu HTML Head a obsahu s předponou zadanou předponou při zachycení. custom- Například lze použít v metaznačku HTML. |
captureAllMetaDataContent | Logický | False | – | 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 | String | Null | – | Načte parentId protokoly v případech, kdy data-parentid nebo data-*-parentid není zjištěn. Z důvodu efektivity zastaví procházení modelu DOM, aby zachytil název obsahu a hodnotu prvků, když data-{parentDataTag} dojde k výskytu atributu nebo customDataPrefix-{parentDataTag} atributu. Další informace najdete v tématu klíč parentId. |
dntDataTag | String | ai-dnt |
data-ai-dnt |
Modul plug-in pro zachytávání telemetrických dat ignoruje elementy HTML s tímto atributem. |
behaviorValidator
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řineste si vlastní strukturu dat. Modul plug-in používá tuto funkci validátoru při extrahování chování ze značek dat.
Název | Popis |
---|---|
BehaviorValueValidator | Tuto funkci zpětného volání použijte, pokud je datová struktura vašeho chování polem řetězců. |
BehaviorMapValidator | Tuto funkci zpětného volání použijte, pokud je datová struktura vašeho chování slovníkem. |
BehaviorEnumValidator | Tuto funkci zpětného volání použijte, pokud je datová struktura vašeho chování výčtem. |
Předávání řetězců 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 náklady nejsou problém, můžete předat 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 zařízení může vypadat jinak v závislosti na taxonomii vaší organizace a událostech, které shromažďujete.
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 a zjistěte, jak implementovat vlastní vlastnosti událostí, jako Name
je a parentid
vlastní chování a obsah. Informace o tom, kde najít data kliknutím, 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í, jak je parentDataTag
definován, ale modul plug-in nemůže najít tuto značku ve stromu DOM, modul plug-in používá id
nejbližší nadřazený prvek.
Příklad 1
V příkladu parentDataTag
1 není deklarován a data-parentid
není data-*-parentid
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 nadřazeného ID.
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>
U klikaného prvku <Button>
je parentid2
hodnota parentId
. 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é shromáždit hodnotu pro parentId
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 clicked element <Button>
, hodnota parentId
je test6parent
, protože parentDataTag
je deklarován. Tato deklarace umožňuje modulu plug-in procházet strom aktuálního elementu, a proto ID jeho nejbližšího nadřazeného objektu se použije, když podrobnosti nadřazeného ID nejsou přímo zadané 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 modul plug-in Autocollection Click Analytics.
- Analýza událostí v prostředí Využití slouží k analýze horních kliknutí a řezu 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.