Not
Å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",
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
customDataPrefixinte deklareras i den avancerade konfigurationen användsidsomdata-idicustomEventnamnet. - Om
customDataPrefixdeklareras, används den angivnaidsom tillhandahålls idata-*-id, vilket betyder att den måste börja meddataoch sluta medidoch används somcustomEvent-namn. Om det HTML-element som klickats på till exempel har attributet"data-sample-id"="button1", är"button1"customEventnamnet. -
data-idOm attributet ellerdata-*-idinte finns och omuseDefaultContentNameOrIdär inställt påtrueanvänds det klickade elementets HTML-attributideller innehållsnamn för elementetcustomEventsom namn. Om bådeidoch innehållsnamnet finns ges prioritet tillid. - Om
useDefaultContentNameOrIdärfalse, ärcustomEvent-namnet"not_specified". Vi rekommenderar att du angeruseDefaultContentNameOrIdtilltruefö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
contentNamefylls i baserat på följande regler, som visas i prioritetsordning:- Värdet för
valueattributet för elementet - Värdet för
nameattributet för elementet - Värdet för
altattributet för elementet - Värdet för attributet innerText för elementet
- Värdet för
idattributet för elementet
- Värdet för
parentId nyckel
Om du vill fylla i parentId nyckeln i customDimensionscustomEvent 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 avidellerdata-*-idsom är definierat i det element som är närmast det klickade elementet somparentId. - Om både
data-*-idochiddefinieras ges prioritet tilldata-*-id. - Om
parentDataTaghar definierats, men plugin-programmet inte kan hitta den här taggen under DOM-trädet, använder plugin-programmetidellerdata-*-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
parentDataTaghar definierats och ingenparentIdinformation ingår i det aktuella elementet samlas ingetparentIdvärde in. - Om
parentDataTagär definierat, angesuseDefaultContentNameOrIdtillfalse, och endast ettid-attribut är definierat i elementet som är närmast det klickade elementet, fyllsparentIdi som"not_specified". Om du vill hämta värdet föridanger duuseDefaultContentNameOrIdtilltrue.
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
parentDataTagingå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
parentDataTagdeklareras 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 truesamlar 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-*-iddata-<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",
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-parentiddata-*-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 parentIdparentid2. Ä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å parentIdtest6parent, 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-handledning och loggfrågor i Azure Monitor-loggar om du inte är bekant med processen för att skriva en fråga.
- Skapa en arbetsbok eller exportera till Power BI för att skapa anpassade visualiseringar av klickdata.