Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Application Insights JavaScript SDK-funktionstillägg är extra funktioner som kan läggas till i Application Insights JavaScript SDK för att förbättra dess funktioner.
I den här artikeln går vi igenom plugin-programmet Click Analytics som automatiskt spårar klickhändelser på webbsidor och använder data-*
attribut eller anpassade taggar på HTML-element för att fylla i händelsetelemetri.
Förutsättningar
Installera JavaScript SDK innan du aktiverar plugin-programmet Click Analytics.
Vilka data samlar plugin-programmet in?
Följande nyckelegenskaper registreras som standard när plugin-programmet är aktiverat.
Anpassade händelseegenskaper
Namn | beskrivning | Exempel |
---|---|---|
Namn | Namnet på den anpassade händelsen. Mer information om hur ett namn fylls i finns i kolumnen Namn. | Om |
objekttyp | Typ av händelse. | anpassad händelse |
SDK-version | Version av Application Insights SDK tillsammans med klicktillägg. | JavaScript:2_ClickPlugin2 |
Anpassade dimensioner
Namn | beskrivning | Exempel |
---|---|---|
åtgärdstyp | Åtgärdstyp som orsakade klickhändelsen. Det kan vara ett vänster- eller högerklick. | CL |
basitypskälla | Bastypkälla för den anpassade händelsen. | ClickEvent |
klickkoordinater | Koordinater där klickhändelsen utlöses. | 659X47 |
innehåll | Platshållare för att lagra extra data-* attribut och värden. |
[{sample1:value1, sample2:value2}] |
sidnamn | Rubrik på sidan där klickhändelsen utlöses. | Exempelrubrik |
parentId | ID eller namn på föräldraelementet. Mer information om hur ett parentId fylls i finns i parentId-nyckeln. | navbar-container |
Anpassade mått
Namn | beskrivning | Exempel |
---|---|---|
timeToAction | Tiden det tog i millisekunder för användaren att klicka på elementet sedan den första sidinläsningen. | 87407 |
Lägg till Click Analytics-plug-in
Användare kan konfigurera plugin-programmet Click Analytics Auto-Collection via JavaScript (Web) SDK Loader Script eller npm och sedan lägga till ett ramverkstillägg.
Kommentar
Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergå till anslutningssträngar för att dra nytta av nya funktioner.
Lägga till koden
Klistra in SDK-inläsningsskriptet för JavaScript (Web) överst på varje sida som du vill aktivera Application Insights för.
<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>
Mer information om hur du lägger till eller uppdaterar Skriptkonfiguration för JavaScript (webb) SDK-inläsare finns i Skriptkonfiguration för JavaScript (webb) SDK.
Tips
Om du vill lägga till ett ramverkstillägg eller om du redan har lagt till ett kan du läsa kodexemplen React, React Native och Angular för hur du lägger till plugin-programmet Click Analytics.
(Valfritt) Ange den autentiserade användarkontexten
Om du vill ange den här valfria inställningen kan du läsa Ange den autentiserade användarkontexten.
Om du använder en HEART-arbetsbok med plugin-programmet Click Analytics behöver du inte ange den autentiserade användarkontexten för att se telemetridata. Mer information finns i dokumentationen för HEART-arbetsboken.
Använda plugin-programmet
I följande avsnitt beskrivs hur du använder plugin-programmet.
Lagring av telemetridata
Telemetridata som genereras från klickhändelserna lagras som customEvents
i avsnittet Azure Portal > Application Insights-loggar>.
name
Kolumnen name
i customEvent
fylls i baserat på följande regler:
- Om
customDataPrefix
inte deklareras i den avancerade konfigurationen användsid
somdata-id
icustomEvent
namnet. - Om
customDataPrefix
deklareras, används den angivnaid
som tillhandahålls idata-*-id
, vilket betyder att den måste börja meddata
och sluta medid
och används somcustomEvent
-namn. Om det HTML-element som klickats på till exempel har attributet"data-sample-id"="button1"
, är"button1"
customEvent
namnet. -
data-id
Om attributet ellerdata-*-id
inte finns och omuseDefaultContentNameOrId
är inställt påtrue
används det klickade elementets HTML-attributid
eller innehållsnamn för elementetcustomEvent
som namn. Om bådeid
och innehållsnamnet finns ges prioritet tillid
. - Om
useDefaultContentNameOrId
ärfalse
, ärcustomEvent
-namnet"not_specified"
. Vi rekommenderar att du angeruseDefaultContentNameOrId
tilltrue
för att generera meningsfulla data.
contentName
Om du har definierat contentName
i avancerad konfiguration fylls kolumnen contentName
i baserat på följande regler:
För ett klickat HTML-element
<a>
försöker plugin-programmet samla in värdet för dess innerText-attribut (text). Om plugin-programmet inte hittar det här attributet försöker det samla in värdet för dess innerHtml-attribut.För en klickad HTML
<img>
- eller<area>
-element, samlar plugin-programmet in värdet för dessalt
-attribut.För alla andra klickade HTML-element
contentName
fylls i baserat på följande regler, som visas i prioritetsordning:- Värdet för
value
attributet för elementet - Värdet för
name
attributet för elementet - Värdet för
alt
attributet för elementet - Värdet för attributet innerText för elementet
- Värdet för
id
attributet för elementet
- Värdet för
parentId
nyckel
Om du vill fylla i parentId
nyckeln i customDimensions
customEvent
tabellen i loggarna deklarerar du taggen parentDataTag
eller definierar data-parentid
attributet.
Värdet för parentId
hämtas baserat på följande regler:
- När du deklarerar
parentDataTag
, hämtar plugin-programmet värdet avid
ellerdata-*-id
som är definierat i det element som är närmast det klickade elementet somparentId
. - Om både
data-*-id
ochid
definieras ges prioritet tilldata-*-id
. - Om
parentDataTag
har definierats, men plugin-programmet inte kan hitta den här taggen under DOM-trädet, använder plugin-programmetid
ellerdata-*-id
, som är definierad inom det element som är närmast det klickade elementet, somparentId
. Vi rekommenderar dock att du definierar antingendata-{parentDataTag}
- ellercustomDataPrefix-{parentDataTag}
-attributet för att minska antalet loopar som behövs för att hittaparentId
. DeklareringparentDataTag
är användbart när du behöver använda plugin-programmet med anpassade alternativ. - Om nej
parentDataTag
har definierats och ingenparentId
information ingår i det aktuella elementet samlas ingetparentId
värde in. - Om
parentDataTag
är definierat, angesuseDefaultContentNameOrId
tillfalse
, och endast ettid
-attribut är definierat i elementet som är närmast det klickade elementet, fyllsparentId
i som"not_specified"
. Om du vill hämta värdet förid
anger duuseDefaultContentNameOrId
tilltrue
.
När du definierar data-parentid
attributet eller data-*-parentid
hämtar plugin-programmet instansen av det här attributet som är närmast det klickade elementet, inklusive i det klickade elementet om tillämpligt.
Om du deklarerar parentDataTag
och definierar data-parentid
attributet eller data-*-parentid
ges prioritet till data-parentid
eller data-*-parentid
.
Om telemetrivarningen "rader för klickhändelser utan parentId-värde" visas kan du läsa Åtgärda varningen "rader för klickhändelser utan parentId-värde".
Exempel som visar vilket värde som hämtas som parentId
för olika konfigurationer finns i Exempel på parentid
nyckel.
Varning
- En gång
parentDataTag
ingår i alla HTML-element i programmet börjar SDK:t leta efter överordnade taggar i hela programmet och inte bara HTML-elementet där du använde det. - Om du använder HEART-arbetsboken med plugin-programmet Click Analytics måste taggen
parentDataTag
deklareras i alla andra delar av en slutanvändares program för att HEART-händelser ska loggas eller identifieras.
customDataPrefix
AlternativetcustomDataPrefix
i avancerad konfiguration ger användaren möjlighet att konfigurera ett prefix för dataattribut för att identifiera var hjärtat finns i personens kodbas. Prefixet måste alltid stå med små bokstäver och börja med data-
. Till exempel:
data-heart-
data-team-name-
data-example-
I HTML kallas de globala attributen data-*
anpassade dataattribut som gör att upphovsrättsskyddad information kan utbytas mellan HTML och dess DOM-representation med skript. Äldre webbläsare som Internet Explorer och Safari släpper attribut som de inte förstår, såvida de inte börjar med data-
.
Du kan ersätta asterisken (*
) i data-*
med valfritt namn efter produktionsregeln för XML-namn med följande begränsningar.
- Namnet får inte börja med "xml", oavsett vilken kombination av versaler och gemener som används för bokstäverna.
- Namnet får inte innehålla ett semikolon (U+003A).
- Namnet får inte innehålla versaler.
Lägga till avancerad konfiguration
Namn | Typ | Standardvärde | beskrivning |
---|---|---|---|
automatisk inspelning | Booleskt | Sant | Automatisk inspelningskonfiguration. |
Återuppringning | IValueCallback | Noll | Konfiguration av återanrop. |
pageTags | Objekt | Noll | Sidoetiketter. |
dataetiketter | ICustomDataTags | Noll | Anpassade datataggar som tillhandahålls för att åsidosätta standardtaggar som används för att samla in klickdata. |
urlCollectHash | Booleskt | Falsk | Aktiverar loggning av värden efter ett "#"-tecken för URL:en. |
urlCollectQuery | Booleskt | Falsk | Aktiverar loggning av frågesträngen för URL:en. |
beteendevaliderare | Funktion | Noll | Återanropsfunktion som ska användas för värdeverifieringen data-*-bhvr . Mer information finns i avsnittet behaviorValidator. |
defaultRightClickBhvr | Sträng (eller) nummer | '' | Standardbeteendevärde när en högerklickshändelse har inträffat. Det här värdet åsidosättas om elementet har attributet data-*-bhvr . |
bortse från ogiltiga händelser | Booleskt | Falsk | Flagga för att ignorera händelser som inte har användbara klickdata. |
IValueCallback
Namn | Typ | Standardvärde | beskrivning |
---|---|---|---|
sidnamn | Funktion | Noll | Funktion för att åsidosätta standardbeteendet pageName för insamling. |
sidaÅtgärdSidaTaggar | Funktion | Noll | En återanropsfunktion för att utöka standardvärdet pageTags som samlas in under en pageAction händelse. |
innehållNamn | Funktion | Noll | En återanropsfunktion för att fylla i anpassade contentName . |
ICustomDataTags
Namn | Typ | Standardvärde | Standardtagg som ska användas i HTML | beskrivning |
---|---|---|---|---|
användStandardInnehållsnamnEllerId | Booleskt | Falsk | Ej tillämpligt | Om true samlar in standard-HTML-attribut id för contentName när ett visst element inte är taggat med standarddataprefixet eller customDataPrefix . Annars samlas standard-HTML-attributet id för contentName inte in. |
customDataPrefix | Sträng | data- |
data-* |
Automatisk fångst av innehållsnamn och värde för element som taggas med angivet prefix. Kan data-*-id data-<yourcustomattribute> till exempel användas i HTML-taggarna. |
aiBlobAttributeTag | Sträng | ai-blob |
data-ai-blob |
Plugin-programmet stöder ett JSON-blobattribut i stället för enskilda data-* attribut. |
metaDataPrefix | Sträng | Noll | Ej tillämpligt | Fånga automatiskt HTML-huvudets metaelements namn och innehåll med angivet prefix när det fångas. Kan till exempel custom- användas i HTML-metataggen. |
captureAllMetaDataContent | Booleskt | Falsk | Ej tillämpligt | Samla automatiskt in alla HTML-huvudets metaelementnamn och innehåll. Standardvärdet är false. Om aktiverad åsidosätter den angivna metaDataPrefix . |
parentDataTag | Sträng | Noll | Ej tillämpligt | Hämtar parentId i loggarna när data-parentid eller data-*-parentid inte påträffas. För effektivitet slutar att bläddra upp DOM för att samla in innehållsnamn och värde för element när data-{parentDataTag} eller customDataPrefix-{parentDataTag} attribut påträffas. Mer information finns i parentId-nyckeln. |
dntDataTag | Sträng | ai-dnt |
data-ai-dnt |
Plugin-programmet för att samla in telemetridata ignorerar HTML-element med det här attributet. |
beteendevaliderare
Funktionerna behaviorValidator
kontrollerar automatiskt att taggade beteenden i kod överensstämmer med en fördefinierad lista. Funktionerna säkerställer att taggade beteenden överensstämmer med företagets etablerade taxonomi. Det är inte nödvändigt eller förväntat att de flesta Azure Monitor-kunder använder dessa funktioner, men de är tillgängliga för avancerade scenarier. Funktionerna behaviorValidator kan hjälpa dig med mer tillgängliga metoder.
Beteenden visas i fältet customDimensions i tabellen CustomEvents.
Återanropsfunktioner
Tre olika behaviorValidator
återanropsfunktioner exponeras som en del av det här tillägget. Du kan också använda dina egna återanropsfunktioner om de exponerade funktionerna inte löser dina behov. Avsikten är att ta med ditt eget beteendes datastruktur. Plugin-programmet använder den här valideringsfunktionen när beteendet extraheras från datataggar.
Namn | beskrivning |
---|---|
Beteendevärdevalidator | Använd den här återanropsfunktionen om ditt beteendes datastruktur är en matris med strängar. |
Beteendekartvalidator | Använd den här återanropsfunktionen om ditt beteendes datastruktur är en ordlista. |
BehaviorEnumValidator | Använd den här återanropsfunktionen om datastrukturen för ditt beteende är av enum-typ. |
Skicka in sträng kontra numeriska värden
Om du vill minska antalet byte som du skickar skickar du in talvärdet i stället för den fullständiga textsträngen. Om kostnaden inte är ett problem kan du skicka in den fullständiga textsträngen (till exempel NAVIGATIONBACK).
Exempelanvändning med behaviorValidator
Här är ett exempel på hur en beteendekarteverifierare kan se ut. Din kan se annorlunda ut, beroende på organisationens taxonomi och de händelser du samlar in.
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();
Exempelapp
Se en enkel webbapp med plugin-programmet Click Analytics Autocollection aktiverat för att implementera anpassade händelseegenskaper som Name
och parentid
anpassat beteende och innehåll. Mer information om var du hittar klickdata finns i exempelappens readme .
Exempel på parentId
nyckel
I följande exempel visas vilket värde som hämtas som parentId
för olika konfigurationer.
Exemplen visar hur om parentDataTag
har definierats men plugin-programmet inte kan hitta den här taggen under DOM-trädet, plugin-programmet använder id
det närmaste överordnade elementet.
Exempel 1
I exempel 1 parentDataTag
deklareras inte och data-parentid
data-*-parentid
definieras inte i något element. Det här exemplet visar en konfiguration där ett värde för parentId
inte samlas in.
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>
För klickade elementet <Button>
har parentId
värdet not_specified
, eftersom inga parentDataTag
detaljer har definierats och inget överordnat element-ID har definierats i det aktuella elementet.
Exempel 2
I exempel 2 parentDataTag
deklareras och data-parentid
definieras. Det här exemplet visar hur information om parent-ID samlas in.
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>
För det klickade elementet <Button>
är värdet av parentId
parentid2
. Även om parentDataTag
deklareras, definieras data-parentid
direkt inom elementet. Därför har det här värdet företräde framför alla andra överordnade ID:er eller ID-information som definierats i dess överordnade element.
Exempel 3
I exempel 3 parentDataTag
deklareras och data-parentid
attributet eller data-*-parentid
definieras inte. Det här exemplet visar hur deklarering parentDataTag
kan vara användbart för att samla in ett värde för parentId
fall där dynamiska element inte har en id
eller 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>
För det klickade elementet <Button>
är värdet på parentId
test6parent
, eftersom parentDataTag
har deklarerats. Med den här deklarationen kan plugin-programmet passera det aktuella elementträdet och därför används ID:t för dess närmaste överordnade när överordnad ID-information inte tillhandahålls direkt i det aktuella elementet. När data-group="buttongroup1"
är definierad hittar plugin parentId
mer effektivt.
Om du tar bort data-group="buttongroup1"
attributet är värdet parentId
fortfarande test6parent
, eftersom parentDataTag
fortfarande är deklarerat.
Felsökning
Se den dedikerade felsökningsartikeln.
Nästa steg
- Bekräfta att data flödar.
- Se dokumentationen om hur du använder HEART-arbetsboken för utökad produktanalys.
- Se GitHub-lagringsplatsen och npm-paketet för plugin-programmet Click Analytics Autocollection.
- Använd Händelseanalys i användningsmiljön för att analysera de översta klicken och segmentera efter tillgängliga dimensioner.
- Se Log Analytics om du inte är bekant med processen med att skriva en fråga.
- Skapa en arbetsbok eller exportera till Power BI för att skapa anpassade visualiseringar av klickdata.