MCPcopy Index your code
hub / github.com/ampproject/amphtml / insertAnalyticsElement

Function insertAnalyticsElement

src/extension-analytics.js:20–51  ·  view source on GitHub ↗
(
  parentElement,
  config,
  loadAnalytics = false,
  disableImmediate = false
)

Source from the content-addressed store, hash-verified

18 * @return {!Element} created analytics element
19 */
20export function insertAnalyticsElement(
21 parentElement,
22 config,
23 loadAnalytics = false,
24 disableImmediate = false
25) {
26 const doc = /** @type {!Document} */ (parentElement.ownerDocument);
27 const analyticsElem = createElementWithAttributes(doc, 'amp-analytics', {
28 'sandbox': 'true',
29 'trigger': disableImmediate ? '' : 'immediate',
30 });
31 const scriptElem = createElementWithAttributes(doc, 'script', {
32 'type': 'application/json',
33 });
34 scriptElem.textContent = JSON.stringify(config);
35 analyticsElem.appendChild(scriptElem);
36 analyticsElem.CONFIG = config;
37
38 // Force load analytics extension if script not included in page.
39 if (loadAnalytics) {
40 // Get Extensions service and force load analytics extension.
41 const extensions = Services.extensionsFor(getWin(parentElement));
42 const ampdoc = Services.ampdoc(parentElement);
43 extensions./*OK*/ installExtensionForDoc(ampdoc, 'amp-analytics');
44 } else {
45 Services.analyticsForDocOrNull(parentElement).then((analytics) => {
46 devAssert(analytics);
47 });
48 }
49 parentElement.appendChild(analyticsElem);
50 return analyticsElem;
51}
52
53/**
54 * A class that handles customEvent reporting of extension element through

Callers 7

buildCallbackMethod · 0.90
onCreativeRenderMethod · 0.90
onCreativeRenderMethod · 0.90
onCreativeRenderMethod · 0.90
constructorMethod · 0.85
useAnalyticsInSandboxFunction · 0.85

Calls 6

getWinFunction · 0.90
devAssertFunction · 0.90
stringifyMethod · 0.80
thenMethod · 0.45

Tested by

no test coverage detected