(function () {
function initializeFeedbackSwap() {
var widgets = document.querySelectorAll('[data-feedback-ssr-widget]');
for (var i = 0; i < widgets.length; i++) {
var widget = widgets[i];
if (widget.getAttribute('data-feedback-swap-initialized') === 'true') {
continue;
}
var serverContent = widget.querySelector('[data-feedback-ssr]');
var clientShell = widget.querySelector('[data-feedback-client-shell]');
if (!clientShell) {
continue;
}
widget.setAttribute('data-feedback-swap-initialized', 'true');
(function (currentWidget, currentServerContent, currentClientShell) {
var observer = null;
var readyReceived = false;
function parseCount() {
var countElement = currentClientShell.querySelector('.feedback-average-count');
var text = countElement ? (countElement.textContent || '') : '';
var match = text.match(/\(\s*(\d+)\s*\)/);
return match ? parseInt(match[1], 10) : null;
}
function clientIsComplete(expectedCount) {
var actualCount = parseCount();
var loading = currentClientShell.querySelector('.loading-hint');
if (actualCount === null || loading) {
return false;
}
if (typeof expectedCount === 'number' && actualCount !== expectedCount) {
return false;
}
return true;
}
function swapToClient(expectedCount) {
if (!readyReceived || !clientIsComplete(expectedCount)) {
return;
}
currentClientShell.style.display = '';
currentClientShell.removeAttribute('aria-hidden');
if (currentServerContent && currentServerContent.parentNode) {
currentServerContent.parentNode.removeChild(currentServerContent);
}
if (observer) {
observer.disconnect();
}
}
currentClientShell.setAttribute('aria-hidden', 'true');
currentClientShell.addEventListener('feedback:client-ready', function (event) {
var detail = event && event.detail ? event.detail : {};
var count = Number(detail.count);
if (!isFinite(count) || count < 0) {
return;
}
readyReceived = true;
swapToClient(count);
});
/*
* Conservative fallback for cached client bundles:
* never reveal the client shell merely because markup exists.
* It must contain a real numeric count and no loading hint.
*/
observer = new MutationObserver(function () {
if (readyReceived) {
swapToClient(parseCount());
}
});
observer.observe(currentClientShell, {
childList: true,
subtree: true,
characterData: true
});
})(widget, serverContent, clientShell);
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initializeFeedbackSwap);
} else {
initializeFeedbackSwap();
}
})();
(function () {
function parseReviewCount(shell) {
var countElement = shell.querySelector('.feedback-average-count');
var text = countElement ? (countElement.textContent || '') : '';
var match = text.match(/\(\s*(\d+)\s*\)/);
if (match) {
return parseInt(match[1], 10);
}
if (countElement) {
countElement.textContent = ' (0)';
}
return 0;
}
function updateEmptyState(widget, shell) {
if (!shell) {
return;
}
var count = parseReviewCount(shell);
var isLoading = !!shell.querySelector('.loading-hint');
var stars = shell.querySelector('.feedback-stars-average');
var bars = shell.querySelector('.feedback-bars');
var message = shell.querySelector('.feedback-empty-state');
var row = shell.querySelector('.row.my-2');
var leftColumn = row ? row.querySelector('.col-sm-6') : null;
if (count === 0 && !isLoading) {
if (stars) {
stars.style.display = 'none';
}
if (bars) {
bars.style.display = 'none';
}
if (!message && leftColumn) {
message = document.createElement('p');
message.className = 'feedback-empty-state text-muted mb-0';
message.textContent = widget.getAttribute('data-feedback-empty-state-text') ||
'Für diesen Artikel wurden noch keine Kundenrezensionen verfasst.';
leftColumn.insertBefore(message, leftColumn.firstChild);
}
} else if (count > 0) {
if (stars) {
stars.style.display = '';
}
if (bars) {
bars.style.display = '';
}
if (message && message.parentNode) {
message.parentNode.removeChild(message);
}
}
}
function initializeEmptyStates() {
var widgets = document.querySelectorAll('[data-feedback-ssr-widget]');
for (var i = 0; i < widgets.length; i++) {
var widget = widgets[i];
if (widget.getAttribute('data-feedback-empty-state-initialized') === 'true') {
continue;
}
widget.setAttribute('data-feedback-empty-state-initialized', 'true');
(function (currentWidget) {
var observer = new MutationObserver(function () {
var shell = currentWidget.querySelector('[data-feedback-client-shell]') || currentWidget;
updateEmptyState(currentWidget, shell);
});
observer.observe(currentWidget, {
childList: true,
subtree: true,
characterData: true
});
var shell = currentWidget.querySelector('[data-feedback-client-shell]') || currentWidget;
updateEmptyState(currentWidget, shell);
})(widget);
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initializeEmptyStates);
} else {
initializeEmptyStates();
}
})();
{"@context":"https:\/\/schema.org","@type":"Product","@id":"https:\/\/www.mephisto-tools.com\/2-wahl-ratschenkoffer-werkzeugkoffer-drehmomentschluessel-werkzeugkoffer-mit-trolleyfunktion_73900_15016#product","name":"2. Wahl verschiedene Werkzeugkoffer","url":"https:\/\/www.mephisto-tools.com\/2-wahl-ratschenkoffer-werkzeugkoffer-drehmomentschluessel-werkzeugkoffer-mit-trolleyfunktion_73900_15016","description":"Mit diesem Werkzeugkoffer zweiter Wahl profitieren Sie von einer besonders cleveren M\u00f6glichkeit, bares Geld zu sparen. Trotz kleiner optischer M\u00e4ngel erhalten Sie ein voll funktionsf\u00e4higes Produkt, das Ihnen zuverl\u00e4ssig bei all Ihren Arbeiten zur Seite steht und das zu einem deutlich reduzierten Preis.Ideal f\u00fcr alle, die Wert auf Funktionalit\u00e4t legen und gleichzeitig ihr Budget schonen m\u00f6chten. Hinweis:Bitte beachten Sie: Bei diesem Werkzeugkoffer handelt es sich ausdr\u00fccklich um einen Artikel zweiter Wahl bzw. um B-Ware. Das bedeutet, dass er optische M\u00e4ngel aufweisen kann.Folgende Erscheinungen k\u00f6nnen auftreten: Risse, Dellen, Besch\u00e4digungen am Fu\u00df, Dellen oder Risse an den R\u00e4dern, Br\u00fcche, Kratzer, Flugrost, Br\u00fcche an Schrauben, Gebrauchsspuren, Verf\u00e4rbungen.Die Funktionalit\u00e4t des Produkts sowie der Werkzeuge ist davon jedoch nicht unmittelbar beeintr\u00e4chtigt und das Werkzeug ist ebenfalls vollst\u00e4ndig enthalten. Der Werkzeugkoffer wurde gepr\u00fcft und ist einsatzf\u00e4hig, wird jedoch aufgrund der genannten Sch\u00f6nheitsfehler zu einem reduzierten Preis angeboten. Hinweis zur Gew\u00e4hrleistung:Dieser Artikel wird als B-Ware \/ Ausstellungsst\u00fcck verkauft. Es k\u00f6nnen optische M\u00e4ngel oder Gebrauchsspuren vorhanden sein, die die Funktion nicht beeintr\u00e4chtigen.Die gesetzliche Gew\u00e4hrleistung betr\u00e4gt in diesem Fall 12 Monate ab Lieferung.","sku":"73900","productID":"73900","brand":{"@type":"Brand","name":"Mephisto"},"image":["https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Ratschenkoffer-Steckschluessel-Satz-Premium-XXL--216-teilig-73001-73001-Startbild-1-.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Ratschenkoffer-Steckschluessel-Satz-Premium-XXL--216-teilig-73001-73001-Info-delivery-s.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Ratschenkoffer-Steckschluessel-Satz-Premium-XXL--216-teilig-73001-73001-Info-delivery_1.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Ratschenkoffer-Steckschluessel-Satz-Premium-XXL--216-teilig-73001-73001-Info-dimensions.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Ratschenkoffer-Steckschluessel-Satz-Premium-XXL--216-teilig-73001-73001-Info-deposit1-1.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Ratschenkoffer-Steckschluessel-Satz-Premium-XXL--216-teilig-73001-73001-Info-deposit2-1.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Werkzeugkoffer-mit-Trolleyfunktion-gefuellt-mit-Werkzeug-131-tlg--73002-73002-Startbild.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Werkzeugkoffer-mit-Trolleyfunktion-gefuellt-mit-Werkzeug-131-tlg--73002-73002-delivery-.jpg","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Mephisto-Tools-Werkzeugkoffer-1173002-1-1-.JPG","https:\/\/images.mephisto-tools.com\/item\/images\/73900\/full\/2--Wahl-Ratschenkoffer-Werkzeugkoffer-Drehmomentschluessel-Werkzeugkoffer-mit-Trolleyfunktion-73900-Mephisto-Tools-Werkzeugkoffer-1273002-1-.JPG"],"offers":{"@type":"Offer","@id":"https:\/\/www.mephisto-tools.com\/2-wahl-ratschenkoffer-werkzeugkoffer-drehmomentschluessel-werkzeugkoffer-mit-trolleyfunktion_73900_15016#offer","price":"20.00","priceCurrency":"EUR","availability":"https:\/\/schema.org\/OutOfStock","itemCondition":"https:\/\/schema.org\/NewCondition","url":"https:\/\/www.mephisto-tools.com\/2-wahl-ratschenkoffer-werkzeugkoffer-drehmomentschluessel-werkzeugkoffer-mit-trolleyfunktion_73900_15016","seller":{"@type":"Organization","name":"Four & More GmbH","@id":"https:\/\/www.mephisto-tools.com\/#organization","url":"https:\/\/www.mephisto-tools.com\/","hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","returnPolicyCategory":"https:\/\/schema.org\/MerchantReturnFiniteReturnWindow","merchantReturnDays":14,"returnMethod":"https:\/\/schema.org\/ReturnByMail","returnFees":"https:\/\/schema.org\/ReturnFeesCustomerResponsibility","refundType":"https:\/\/schema.org\/FullRefund","@id":"https:\/\/www.mephisto-tools.com\/#merchant-return-policy","applicableCountry":"DE","returnPolicyCountry":"DE","merchantReturnLink":"https:\/\/www.mephisto-tools.com\/widerrufsrecht\/"}}}}