Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Yieldr JavaScript Tracker

Sauce Test Status

This library is being served to clients implementing the Yieldr tracking snippet. On a high level it defines a single JSON-P function responsible for performing actions based on the tracking server response.

Before triggering a request to the remote tracking server, it collects information from the current document, using referrer, query parameters, cookies, sessions and so on.

Usage

Place the following HTML snippet at the end of your documents body.

<scripttype="text/javascript">(function(y,l,d,r){y['YieldrTrackingObject']=r;y[r]=y[r]||{data: {},set: function(name,value){this.data[name]=value;}};if(!y[r].loaded){vars=l.createElement("script");s.async=true;s.src=d;l.getElementsByTagName("head")[0].appendChild(s);y[r].loaded=true;}})(window,document,"//cdn.254a.com/static/y.js","y");y.set("foo","bar");y.set("bar","baz");</script>

A valid implementation should should include an id or advertiser_id parameter for a network or advertiser pixel respectively. Any additional parameters will be forwared to the server and will be used agains evaluating cases.

API

Depending on how you've set up the tag in your site a global object (by default y) is available inside the window. This can be configured to another name if you run into conflicts.

y.set("foo", "bar")

Set property foo with value "bar". This is used to specify properties which you want to transmit to the server when initiating tracking calls.

y.track()

Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.

y.fire({foo: "bar"})

Similar to y.track() but it will only use the supplied paramaters.

y.callback(data)

This function is usually triggered by a JSON-P response so it's not particularly useful to users. This function is responsible for placing any piggyback pixels from the servers response.

y.version

The version of the library.

y.debug

If set to true, it will output some additional information to the console.

Data Layer

As of v0.7.0 it is possible to use values from a tag managers data layer in a flexible way. To use this functionality you must set the '_dl' property.

var data = {a: {b: {c: "x"}}},
mapping = {foo: "a.b.c"};
y.set("_dl", [data, mapping]); // will extract "x" from data and make it available as "foo".

The values extracted are then "flattened" as best possible so they can be used in query parameters. For example if our mapping was {foo: "a.b"} then the result would be the object {c: "x"} instead of the string "x". This will be flattened to the key foo_c with value "x".

Events

As of v0.7.0 you can initiate tracking calls when an event triggers, for example a button was clicked.

y.set("_elem", ["a#submit", "click"]);
- `y.track()` Makes a request to the remote server, passing along any parameters discovered by parsing the current window context.
- `y.fire(data)` Similar to `y.track()` but it will only use the supplied paramaters.
  • y.version Defines the version of the library.
  • y.debug If true, it will output some additional information to the console.

Referrer

The URL which was visited before triggering a pixel load is saved to the current users session. It will be augmented to any previous referrers and also stored in a cookie. If the referrer URL matches a list of known referrers, the name is normalised.

Query Parameters

Any query parameters set on the parent document will be merged with all other data and sent to the remote tracking server. If there are conflicts between query parameters and parameters set using y.set(), the latter will be preferred.

Session

While a user is browsing and triggering various events with this pixel, a session ID is used to group several events which happened in a single session. Sessions are invalidated once the user closes the browser tab, window or browser. The session properties being set defined below.

  • ysess A random hex string used to identify a particular session. E.g. 7a3239f3-7c25-5d2d-ebaa-8b64ce99ddd6.
  • ytsrc The traffic source or referrer. E.g. NO_REFERRER, example.com, google.
  • ytt The traffic type. E.g. search, display, self or other.

Cookie

The users browsing history in terms of referrer is stored as a pipe (|) delimited string of urls. E.g. NO_REFERRER|google|criteo|www.volotea.com. The cookie is set as first party.

About

Yieldr's tracking library

Resources

Stars

5 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages