Sdílet prostřednictvím


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:

  1. Pokud customDataPrefix není deklarován v rozšířené konfiguraci, id použije se jako název zadaný v data-id souboru customEvent .
  2. Je-li customDataPrefix deklarován, zadanou id v data-*-idsadě , což znamená, že musí začínat data a končit id, se použije jako customEvent název. Pokud například klikaný element HTML má atribut "data-sample-id"="button1", pak "button1" je customEvent název.
  3. data-id data-*-id Pokud atribut neexistuje a pokud useDefaultContentNameOrId je nastaven na true, atribut HTML id nebo název obsahu clicked elementu se použije jako customEvent název. Pokud je k dispozici název id obsahu i název obsahu, předá idse přednost .
  4. Pokud useDefaultContentNameOrId je false, customEvent název je "not_specified". Doporučujeme nastavit useDefaultContentNameOrId pro true 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 jeho alt 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:

    1. Hodnota atributu value elementu
    2. Hodnota atributu name elementu
    3. Hodnota atributu alt elementu
    4. Hodnota innerText atributu elementu
    5. Hodnota atributu id elementu

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 hodnotu id nebo data-*-id definovanou v rámci prvku, který je nejblíže k klikaného prvku jako parentId.
  • Pokud jsou definovány obě data-*-id a id jsou definovány, priorita je předána data-*-id.
  • Pokud parentDataTag je definován, ale modul plug-in nemůže najít tuto značku ve stromu DOM, modul plug-in použije id nebo data-*-id definovaný v rámci elementu, který je nejblíže ke klikaným elementu jako parentId. Doporučujeme však definovat data-{parentDataTag} nebo customDataPrefix-{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 na falsea pouze id atribut je definován v rámci elementu nejblíže clicked element, parentId naplní jako "not_specified".parentDataTag Načtení hodnoty parametru id, nastaveno useDefaultContentNameOrId na truehodnotu .

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 contentNamefunkcí .

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-*-iddata-<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 parentid2hodnota 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