[en] Cookie blocking is a crucial step for successful Cookie Consent implementation. When the OneTrust banner is integrated with a website, users can opt-in or opt-out of certain categories of cookies. But without necessary blocking mechanism in place, these choices might not be respected.
[en] To maintain compliance and ensure cookies are fired based on visitor preferences, it is necessary to have appropriate cookie blocking methods implemented when the OneTrust Banner is integrated.
Cookies selbst können nicht direkt blockiert werden. Die meisten der unter die Gesetzgebung fallenden Cookies werden jedoch durch eingefügte Skripts oder Tags wie JavaScript oder HTML iFrames gesetzt. Dazu gehören die meisten Analyse-Cookies und Cookies von Dritten, wie beispielsweise Werbe-Cookies.
Um dem Gesetz zu entsprechen, sollten solche Skripts daher blockiert oder durch andere Alternativen als Cookies ersetzt werden, wenn die Einwilligung verweigert oder widerrufen wurde.
Um dies zu erreichen, können Sie eines von mehreren benutzerdefinierten JavaScript-Verfahren zusammen mit einer Wrapper-Steuerung verwenden.
Dies ist eines der effizientesten Verfahren, um zu verhindern, dass durch script-Tags gesteuerte Cookies ohne Einwilligung gesetzt werden. Dieses Verfahren erfordert die am wenigsten aufwendige Änderung an Ihrer Website und erfordert keine Verwendung des Wrappers (unten).
Wichtig
Es wird empfohlen, nach Möglichkeit diesen Ansatz zu nutzen.
[en] Below are a couple examples in which this method would be applicable.
Die Nummer im Klassenbezeichner entspricht der Cookie-Gruppen-ID für die Cookies, die das Skript lädt. In diesem Fall handelt es sich um Leistungs-Cookies.
[en] How it Works
Wird der obige Code geladen, wird JavaScript innerhalb der Tags nicht ausgeführt, und es werden keine Cookies gesetzt. Wenn dann der Cookie Compliance-Code geladen wird und Cookies die Einwilligung zur zugehörigen Gruppe haben, ändert er das Tag dynamisch in: script type=text/JavaScript – der Code innerhalb der Tags wird dann erkannt und wie gewohnt ausgeführt.
[en] After re-writing this tag, the script would only fire on the site when a user consents to the C0004 category (Targeting Cookies). The class attribute is responsible for updating the type. When consent is withdrawn/withheld for the assigned category, the type will be text/plain; when consent is given, it will be text/javascript.
[en] In this example, when a user does not consent to Targeting cookies (C0004) , the script tag would appear as follows:
[en] When a user consents to Targeting cookies (C0004), the type will appear as follows:
Anmerkung
Sie können mit dieser Methode mehrere Kategorien von Cookies mit der folgenden Syntax blockieren:
Die Werte in dem Ausdruck class="optanon-category-#-#-#" entsprechen den Kategorien, die in der Cookie-Liste für die Seite eingerichtet wurden.
Wenn Sie mit diesem Verfahren mehrere Kategorien auflisten, werden die Kategorien gleichzeitig gesperrt. Keiner der Cookies in diesen Kategorien wird gesetzt, es sei denn, der Besucher der Website stimmt der Sperrung aller Kategorien zu.
Steuerung von Optanon Wrapper
Der Optanon Wrapper ist im Hauptskript-Tag enthalten und sieht so aus:
<script type="text/javascript">
function OptanonWrapper() {
}
</script>
Er fungiert als Halter für die Hilfsverfahren, mit denen Skripts oder HTML-Tags, die das Setzen von Cookies bewirken, blockiert oder gesteuert werden. Der Wrapper wird bei jedem Seitenaufruf oder immer dann ausgeführt, wenn der Benutzer Änderungen an den Datenschutzeinstellungen im Präferenz-Center speichert.
Werden die Cookie-Gruppen von inaktiv auf aktiv umgeschaltet, so werden die entsprechenden Hilfsverfahren ausgeführt und das zugehörige JavaScript/HTML in die Seite eingefügt.
Die Skripts des Hilfsverfahrens müssen nicht innerhalb der Wrapper-Steuerung platziert werden. Wenn dies jedoch nicht der Fall ist, werden sie nur beim Laden der ersten Seite ausgeführt. Wenn Sie möchten, dass sich eine Opt-in-Aktion (inaktiv zu aktiv) sofort für den Benutzer auf der Seite widerspiegelt, dann sollten Sie den Wrapper verwenden.
Änderungen im Benutzererlebnis als Folge einer Opt-out-Aktion (aktiv zu inaktiv) werden nur beim Aktualisieren der Seite oder beim Navigieren zu einer neuen Seite berücksichtigt.
[en] Below is an example function called through OptanonWrapper():
[en]Example function:
toConsole() {
console.log(“SUCCESS”)
}
function OptanonWrapper{
if(OnetrustActiveGroups.includes("C0002")){
toConsole()
}
}
[en]OnetrustActiveGroups plays a critical role in the Optanon Wrapper Control method. OnetrustActiveGroups is a data layer variable that gets updated every time a user modifies their choices with the latest category IDs. For more details on this variable, see OnetrustActiveGroups – Verwenden des Datenschichtobjekts.
[en] In the above instance, toConsole() is an example function that is writing a message on the console when the if condition is executed. In this example, the if condition is checking for the OnetrustActiveGroups data layer variable and if it includes the C0002 category, meaning when Performance cookies are active. Whenever this condition is satisfied, the toConsole() function is executed. The toConsole() function will be called every time the OptanonWrapper() fires and when a user consents to Performance cookies (C0002).
[en] When the function is executed based on consent for Performance category, it appears as follows:
Anmerkung
[en] The toConsole() function written above is strictly an example. Make sure to implement this method if there are any existing functions on the website that are required to be controlled based on consent.
[en] SDK-Specific Actions
[en] Third-party tools often have public methods that can be called to indicate to the tool that a user has granted or revoked consent. These will often result in the technology being set to “strict” or “restricted” mode so that a restricted amount of data is processed to respect a user’s choices. If the technology you want to control has these methods, you can implement them through the OptanonWrapper control. See the following example:
function OptanonWrapper(){
if(OnetrustActiveGroups.includes(“C0002”)){
myAnalyticsTool.setUnrestrictedMode () //consent given, operate regularly
}else{
myAnalyticsTool.setRestrictedMode() //consent not given, operate in restricted mode
}
}
[en] Events
[en] The OneTrust JavaScript SDK raises several events that can be used to trigger consent-related actions. The two most relevant events are OneTrustGroupsUpdated, which fires when consent becomes available on page load and whenever consent is changed, and OTConsentApplied, which only fires when an explicit consent action has been taken.
[en] When using this method, it’s important to ensure that the third-party technology remains uninitialized or is operating in restricted mode until consent becomes available. Otherwise, it’s possible that data collection is occurring for 1-2 seconds before the third party is told to operate in restricted mode.
Hilfsverfahren werden dazu verwendet, Skripts oder HTML-Tags zu blockieren oder zu steuern, die das Setzen von Cookies bewirken.
Anmerkung
Optanon und OneTrust können austauschbar verwendet werden. Wir empfehlen jedoch die Verwendung von OneTrust.
OneTrust.InsertScript
Bei diesem Verfahren werden die Skripts, die für das Setzen von Cookies verantwortlich sind, in einer externen Datei abgelegt und dynamisch in die Seite eingefügt, wenn die Cookie-Gruppe aktiv ist, der sie zugeordnet sind.
[en] In the example below, gaCookies.js is an external file that is setting Google Analytics cookies. This JavaScript file will be inserted only when Performance cookies are active. Implementing this using the InsertScript method within the OptanonWrapper() function would appear as follows:
function OptanonWrapper() {
OneTrust.InsertScript('path/gaCookies.js','head', null, null, 'C0002');
}
Das Ergebnis:
[en] In this example, the gaCookies.js file will get injected before the closing head tag of the HTML when Performance cookies (C0002) are active. The following script will be inserted in the source and will be executed as a regular JavaScript file:
Wenn die Gruppe Leistungs-Cookies mit der ID 2 auf aktiv oder immer aktiv gesetzt ist, wird das folgende Skript in die Seite unmittelbar vor dem abschließenden head-Tag eingefügt:
Anmerkung
[en] Please note that the gaCookies.js used in the scenario above is strictly an example. This method is applicable to any JavaScript file that is required to be injected in the code based on user consent.
In der folgenden Tabelle finden Sie eine Erläuterung der verschiedenen Parameter.
Parameter
Datentyp
Beschreibung
Wert
Erforderlich
URL
Zeichenfolge
Absolute oder relative URL der JS-Datei
Ja
Selektor
Zeichenfolge
Selektor für übergeordnetes HTML-Element, wo das script-Tag eingefügt wird
Head
Body
Übergeordnete ID
Ja
Rückruf
Funktion
Eine JavaScript-Funktion, die nach dem Einfügen des Skript-Tags aufgerufen wird
Funktionsname
null
Ja
Optionen
Objekt
Eine Liste von Verhaltensweisen, wenn das Skript-Tag eingefügt wird
Siehe Definition der Optionen unten
Ja
groupId
Anzahl
Gruppen-ID, für die das Skript-Tag eingefügt wird
Optanon Gruppen-ID
Ja
OneTrust.InsertHTML
Dieses Verfahren sollte verwendet werden, wenn der Code, der die Einstellung von Cookies steuert, entweder ein Standard- oder ein benutzerdefiniertes HTML-Tag ist.
[en] In this example, the iFrame is the standard HTML element to be injected in a section that has ID 123. The first null value specifies that there is not a callback function and the second null value specifies that there is no options parameter added. The group ID (C0003) will allow the element to be inserted when consent is granted for Functional-category cookies.
Das Ergebnis:
Anmerkung
[en] Please note that this method will automatically add an enclosing div around the element that is getting inserted.
Wenn die Gruppe Funktionalitäts-Cookies auf inaktiv gesetzt ist, wird das Skript nicht eingefügt.
In der folgenden Tabelle finden Sie eine Erläuterung der verschiedenen Parameter.
Parameter
Datentyp
Beschreibung
Wert
Erforderlich
Element
Zeichenfolge
Einzufügendes HTML-Tag
Ja
Selektor
Zeichenfolge
ID des übergeordneten HTML-Elements, wo das Element eingefügt wird
Übergeordnete ID
Ja
Rückruf
Funktion
Eine JavaScript-Funktion, die nach dem Einfügen des Elements aufgerufen wird
Funktionsname
null
Ja
Optionen
Objekt
Eine Liste von Verhaltensweisen, wenn das Element eingefügt wird
Siehe Definition der Optionen unten
null
Ja
groupId
Anzahl
Gruppen-ID, für die das Element eingefügt wird
Optanon Gruppen-ID
Ja
Anmerkung
Einige Komponenten von Drittanbietern, die Cookies setzen, verwenden sowohl JavaScript- als auch HTML-Elemente, die voneinander abhängig sind. In den meisten Fällen müssen Sie dann sowohl das HTML- als auch das JavaScript-Hilfsverfahren gepaart verwenden, um das Problem zu vermeiden, dass ein Element ohne das andere vorhanden ist.
Der Optionsparameter
Bei beiden obigen Methoden bietet der Optionsparameter eine Möglichkeit, den Seiteninhalt basierend darauf, ob die Einwilligung für eine Gruppe von Cookies erteilt wurde, weiter zu beeinflussen. Dies stellt einen einfachen Mechanismus dar, der es Besitzern von Websites ermöglicht, entweder das Opt-in anzuregen oder den Besuchern, die sich abmelden, ein anderes Benutzererlebnis zu bieten.
Der Parameter kann einige oder alle der folgenden Angaben enthalten:
Die folgende Tabelle beschreibt das Verhalten der einzelnen Optionen.
Option
Datentyp
Beschreibung
Wert
Erforderlich
deleteSelectorContent
Boolesch
Löschen Sie alle übergeordneten Containerinhalte, bevor Sie das Element einfügen.
true
false
Nein
makeSelectorVisible
Boolesch
Zeigt das übergeordnete Container-Element nach dem Einfügen des Elements an.
true
false
Nein
makeElementsVisible
Array
Eine Liste der HTML-Element-IDs, die nach dem Einfügen des Elements angezeigt werden sollen.
[ID, ID]
Nein
deleteElements
Array
Eine Liste der HTML-Element-IDs, die nach dem Einfügen des Elements gelöscht werden sollen.
[ID, ID]
Nein
[en] Below are examples for each of these options:
[en]deleteSelectorContent
[en] One of the use-cases for this option is to replace content with script.
function OptanonWrapper() {
let options = { deleteSelectorContent: true
}
OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
}
[en] In the above snippet, OneTrust.InsertScript is utilized to inject gaCookies.js in the parent element with ID div1. Since deleteSelectorContent is set to true, the content of the div1 element will be removed and gaCookies.js will be inserted when a user consents to Functional cookies.
[en]Results:
[en] When functional cookies are inactive:
[en] When functional cookies are active:
[en]makeSelectorVisible
[en] This option is applicable when a user has to first consent to a certain category to view the content of an element. To use this option, the prerequisite is for the parent element to be hidden.
function OptanonWrapper() {
let options = {
makeSelectorVisible: true
}
OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
}
[en] In the above example, if the div1 element is hidden initially, then display: block will be added for that element. When Functional cookies are toggled off, the div1 element will not be visible. When a user consents to the Functional category, gaCookies.js will be inserted and the element will become visible since makeSelectorVisible is set to true.
[en]Results:
[en] When functional cookies are inactive:
[en] When functional cookies are active:
[en]makeElementsVisible
[en] This option is useful when there are multiple elements that are required to be made visible on consent along with script insertion.
function OptanonWrapper() {
let options = {
makeElementsVisible: ['div2','div3']
}
OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
}
[en] In the above example, the OneTrust.InsertScript will insert gaCookies.js in the HTML element with ID div1 when a user consents to Functional cookies. Additionally, because the makeElementsVisible parameter is added, the elements in its array (div2 and div3) will be made visible if they were hidden initially.
[en]Results:
[en] When functional cookies are inactive:
[en] When functional cookies are active:
[en]deleteElements
[en] This is useful in a scenario when multiple elements are required to be deleted once consent is given. Similar to makeElementsVisible, this option is also taken in array as a value.
function OptanonWrapper() {
let options = {
deleteElements: ['div2','div3']
}
OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
}
[en] In the above example, when a user consents to Functional cookies, the gaCookies.js will be inserted in div1. Because the deleteElements parameter is added, the div2 and div3 elements will be deleted.
[en]Results:
[en] When functional cookies are inactive:
[en] When functional cookies are active:
Anmerkung
HTML-Elemente werden immer vor dem Tag des schließenden übergeordneten Elements eingefügt.
Um makeSelectorVisible einzustellen, muss das übergeordnete Element zunächst manuell ausgeblendet werden.
Alle HTML-Elemente, die in der Liste der IDs für makeElementsVisible angegeben sind, müssen zunächst manuell ausgeblendet werden.
deleteSelectorContent löscht nur den Inhalt des Containerelements.
deleteElements löscht jedes angegebene Element vollständig.
Die Verwendung des Selektors zum Festlegen eines anderen Elements als „Head“ oder „Body“ erfordert den ID-Wert des übergeordneten Elements.
[en] The Options parameter can be used with both the Wrapper Control methods – InsertScript and InsertHtml