PageSourceSearch

https://bmw-wiki.vercel.app/static/js/inject.js

js bmw-wiki.vercel.app collected 2026-10-03 06:17:37 UTC 4,287 bytes, 107 lines download raw bytes

1// Yandex.Metrika — counter 108509791
vendor: 375 bytes, lines 1-7
1
2(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
3m[i].l=1*new Date();
4for(var j=0;j<document.scripts.length;j++){if(document.scripts[j].src===r){return;}}
5k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}
6)(window,document,'script','https://mc.yandex.ru/metrika/tag.js','ym');
7ym(
7108509791
vendor: 83 bytes, lines 7-9
7,'init',{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true});
8
9
10// ============================================================
11// Market-Place / MPSU ads for bmw-wiki.vercel.app
12// Articles only: horizontal after 1st, 5th, and 9th paragraphs, corner sticker
13(function () {
14  var MPSU_SCRIPT_SRC = 'https://statika.mpsuadv.ru/scripts/11322.js';
15
16  function isArticlePage() {
17    if (!document.body) return false;
18    if (document.body.classList.contains('home')) return false;
19    if (document.body.classList.contains('category')) return false;
20    if (document.body.classList.contains('archive')) return false;
21    return !!document.querySelector('article, .article-body');
22  }
23
24  function getArticleRoot() {
25    return document.querySelector('article') || document.querySelector('.article-body');
26  }
27
28  function isUnsafeAdParent(node, root) {
29    while (node && node !== root && node !== document.body) {
30      if (node.matches && node.matches('ol, ul, li, blockquote, table, thead, tbody, tr, td, th, figure, figcaption, aside, details, summary, pre, code')) return true;
31      if (node.matches && node.matches('.important, .note, .warning, .alert, .callout, .highlight, .tip, .info, .notice, .attention, .danger, .success, .faq, .steps, .pros-cons, .toc, .contents')) return true;
32      if (node.className && typeof node.className === 'string' && /(important|note|warning|alert|callout|highlight|tip|info|notice|attention|danger|success|faq|steps|pros-cons|toc|contents)/i.test(node.className)) return true;
33      node = node.parentElement;
34    }
35    return false;
36  }
37
38  function getSafeParagraphs(root) {
39    if (!root) return [];
40    return Array.prototype.filter.call(root.querySelectorAll('p'), function (paragraph) {
41      if (!paragraph || !paragraph.parentElement) return false;
42      if (isUnsafeAdParent(paragraph.parentElement, root)) return false;
43      return paragraph.textContent && paragraph.textContent.replace(/\s+/g, '').length >= 40;
44    });
45  }
46
47  function loadMpsuScript() {
48    var existingScript = document.querySelector('script[src="' + MPSU_SCRIPT_SRC + '"]');
49    if (existingScript) return;
50    var script = document.createElement('script');
51    script.async = true;
52    script.src = MPSU_SCRIPT_SRC;
53    document.head.appendChild(script);
54  }
55
56  function startWidget(widgetId) {
57    window.mpsuStart = window.mpsuStart || [];
58    window.mpsuStart.push(widgetId);
59  }
60
61  function createWidget(widgetId) {
62    if (document.getElementById('mp_custom_' + widgetId)) return null;
63    var block = document.createElement('div');
64    block.id = 'mp_custom_' + widgetId;
65    return block;
66  }
67
68  function insertAfterParagraph(widgetId, paragraphNumber) {
69    var root = getArticleRoot();
70    if (!root) return;
71    var paragraphs = getSafeParagraphs(root);
72    var target = paragraphs[paragraphNumber - 1];
73    if (!target || !target.parentNode) return;
74    var block = createWidget(widgetId);
75    if (!block) return;
76    target.parentNode.insertBefore(block, target.nextSibling);
77    startWidget(widgetId);
78  }
79
80  function appendFloating(widgetId) {
81    var block = createWidget(widgetId);
82    if (!block) return;
83    document.body.appendChild(block);
84    startWidget(widgetId);
85  }
86
87  function initMpsuAds() {
88    if (!isArticlePage()) return;
89    loadMpsuScript();
90    // Rotator Static ZBT bmw-wiki.vercel.app horizontal 1 ?39143
91    insertAfterParagraph(39143, 1);
92    // Rotator Static ZBT bmw-wiki.vercel.app horizontal 2 ?39144
93    insertAfterParagraph(39144, 5);
94    // Rotator Static ZBT bmw-wiki.vercel.app horizontal 3 ?40466
95    insertAfterParagraph(40466, 9);
96    // Rotator Recom V bmw-wiki.vercel.app corner sticker ?40396
97    appendFloating(40396);
98  }
99
100  if (document.readyState === 'loading') {
101    document.addEventListener('DOMContentLoaded', initMpsuAds);
102  } else {
103    initMpsuAds();
104  }
105})();
106
107

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.