mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2026-07-22 05:31:42 -04:00
98 lines
3.5 KiB
HTML
98 lines
3.5 KiB
HTML
<!--
|
|
Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to
|
|
deal in the Software without restriction, including without limitation the
|
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
sell copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
IN THE SOFTWARE.
|
|
-->
|
|
|
|
<!-- Determine analytics property -->
|
|
{% if config.extra.analytics %}
|
|
{% set property = config.extra.analytics.property | d("", true) %}
|
|
{% endif %}
|
|
|
|
<!-- Integrate with Google Analytics 4 -->
|
|
<script id="__analytics">
|
|
function __md_analytics() {
|
|
window.dataLayer = window.dataLayer || []
|
|
function gtag() { dataLayer.push(arguments) }
|
|
|
|
/* Set up integration and send page view */
|
|
gtag("js", new Date())
|
|
gtag("config", "{{ property }}")
|
|
|
|
/* Register event handlers after documented loaded */
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
|
|
/* Set up search tracking */
|
|
if (document.forms.search) {
|
|
var query = document.forms.search.query
|
|
query.addEventListener("blur", function() {
|
|
if (this.value)
|
|
gtag("event", "search", { search_term: this.value })
|
|
})
|
|
}
|
|
|
|
/* Set up feedback, i.e. "Was this page helpful?" */
|
|
document$.subscribe(function() {
|
|
var feedback = document.forms.feedback
|
|
if (typeof feedback === "undefined")
|
|
return
|
|
|
|
/* Send feedback to Google Analytics */
|
|
for (var button of feedback.querySelectorAll("[type=submit]")) {
|
|
button.addEventListener("click", function(ev) {
|
|
ev.preventDefault()
|
|
|
|
/* Retrieve and send data */
|
|
var page = document.location.pathname
|
|
var data = this.getAttribute("data-md-value")
|
|
gtag("event", "feedback", { page, data })
|
|
|
|
/* Disable form and show note, if given */
|
|
feedback.firstElementChild.disabled = true
|
|
var note = feedback.querySelector(
|
|
".md-feedback__note [data-md-value='" + data + "']"
|
|
)
|
|
if (note)
|
|
note.hidden = false
|
|
})
|
|
|
|
/* Show feedback */
|
|
feedback.hidden = false
|
|
}
|
|
})
|
|
|
|
/* Send page view on location change */
|
|
location$.subscribe(function(url) {
|
|
gtag("config", "{{ property }}", {
|
|
page_path: url.pathname
|
|
})
|
|
})
|
|
})
|
|
|
|
/* Create script tag */
|
|
var script = document.createElement("script")
|
|
script.async = true
|
|
script.src = "https://www.googletagmanager.com/gtag/js?id={{ property }}"
|
|
|
|
/* Inject script tag */
|
|
var container = document.getElementById("__analytics")
|
|
container.insertAdjacentElement("afterEnd", script)
|
|
}
|
|
</script>
|