window.ecomNormaScripts = window.ecomNormaScripts || (function () { /* ===================================== PROPIEDADES PRIVADAS ===================================== */ const privateProps = window.ecomNormaScripts?.privateProps || { //test1: {}, //test2: 0 }; /* ===================================== INICIALIZACIÓN DE PROPERTIES PRIVADAS ===================================== */ (function initPrivateProps() { /* privateProps.test1 = { test11: "", test111: { test1112: "00,00", test1113: "€", test1114: "00", test1115: "000-00-000", test1116: "0000", test1117: "000" }, test2: "" };*/ })(); /* ===================================== PROPIEDADES PÚBLICAS ===================================== */ const publicProps = { funcsEcomGlobalScripts: null, propsEcomGlobalScripts: null, isDebug: false }; /* ===================================== INICIALIZACIÓN DE PROPERTIES PÚBLICAS ===================================== */ (function initPublicProps() { //publicProps.TEST1 = ""; //publicProps.TEST2 = 0; })(); /* ===================================== FUNCIONES PÚBLICAS ===================================== */ //En functions declaramos la functions publicas const functions = {}; functions.init = async function () { await _initPublicProps(); await _DOMContentLoaded(); }; /* ===================================== FUNCIONES PRIVADAS ===================================== */ const _initPublicProps = async function() { // Obtener referencias de ecomGlobalScripts publicProps.funcsEcomGlobalScripts = window.ecomGlobalScripts?.functions || {}; publicProps.propsEcomGlobalScripts = window.ecomGlobalScripts?.properties || {}; // Configurar debug publicProps.isDebug = (false || publicProps.propsEcomGlobalScripts?.isDebug) ?? false; // Asegurar que querySelectors existe (crearlo si no existe) publicProps.propsEcomGlobalScripts.querySelectors ??= {}; // Agregar las propiedades querySelectors publicProps.propsEcomGlobalScripts.querySelectors.rootSelector = "#ecom-norma-detail-normas-referenced .standards-section"; }; const _DOMContentLoaded = async function () { //Se llama desde [dxp-ecom-portal/misc/adt/tienda/Detalle producto/ECOM-Global-Scripts.ftl] desde: document.addEventListener("DOMContentLoaded") if (publicProps.isDebug) console.log("DOMContentLoaded ecom Norma scripts"); window.ecomGlobalScripts?.functions?.pushViewItemEvent?.({ name: "UNE 84697:2017", id: "N0058633", category: "Normas UNE" }); }; // ---- Execute Listener DOMContentLoaded ---- document.addEventListener("DOMContentLoaded", async function() { //Se llama desde [dxp-ecom-portal/misc/adt/tienda/Detalle producto/ECOM-Global-Scripts.ftl] desde: document.addEventListener("DOMContentLoaded") //await _DOMContentLoaded(); }); /* ===================================== API PÚBLICA ===================================== */ return { properties: publicProps, // properties public functions: functions // functions public }; })(); window.ecomNormaScripts = window.ecomNormaScripts || (function () { /* ===================================== PROPIEDADES PRIVADAS ===================================== */ const privateProps = window.ecomNormaScripts?.privateProps || { //test1: {}, //test2: 0 }; /* ===================================== INICIALIZACIÓN DE PROPERTIES PRIVADAS ===================================== */ (function initPrivateProps() { /* privateProps.test1 = { test11: "", test111: { test1112: "00,00", test1113: "€", test1114: "00", test1115: "000-00-000", test1116: "0000", test1117: "000" }, test2: "" };*/ })(); /* ===================================== PROPIEDADES PÚBLICAS ===================================== */ const publicProps = { funcsEcomGlobalScripts: null, propsEcomGlobalScripts: null, isDebug: false }; /* ===================================== INICIALIZACIÓN DE PROPERTIES PÚBLICAS ===================================== */ (function initPublicProps() { //publicProps.TEST1 = ""; //publicProps.TEST2 = 0; })(); /* ===================================== FUNCIONES PÚBLICAS ===================================== */ //En functions declaramos la functions publicas const functions = {}; functions.init = async function () { await _initPublicProps(); await _DOMContentLoaded(); }; /* ===================================== FUNCIONES PRIVADAS ===================================== */ const _initPublicProps = async function() { // Obtener referencias de ecomGlobalScripts publicProps.funcsEcomGlobalScripts = window.ecomGlobalScripts?.functions || {}; publicProps.propsEcomGlobalScripts = window.ecomGlobalScripts?.properties || {}; // Configurar debug publicProps.isDebug = (false || publicProps.propsEcomGlobalScripts?.isDebug) ?? false; // Asegurar que querySelectors existe (crearlo si no existe) publicProps.propsEcomGlobalScripts.querySelectors ??= {}; // Agregar las propiedades querySelectors publicProps.propsEcomGlobalScripts.querySelectors.rootSelector = "#ecom-norma-detail-normas-referenced .standards-section"; }; const _DOMContentLoaded = async function () { //Se llama desde [dxp-ecom-portal/misc/adt/tienda/Detalle producto/ECOM-Global-Scripts.ftl] desde: document.addEventListener("DOMContentLoaded") if (publicProps.isDebug) console.log("DOMContentLoaded ecom Norma scripts"); window.ecomGlobalScripts?.functions?.pushViewItemEvent?.({ name: "UNE 84697:2017", id: "N0058633", category: "Normas UNE" }); }; // ---- Execute Listener DOMContentLoaded ---- document.addEventListener("DOMContentLoaded", async function() { //Se llama desde [dxp-ecom-portal/misc/adt/tienda/Detalle producto/ECOM-Global-Scripts.ftl] desde: document.addEventListener("DOMContentLoaded") //await _DOMContentLoaded(); }); /* ===================================== API PÚBLICA ===================================== */ return { properties: publicProps, // properties public functions: functions // functions public }; })(); ', '' ], loop: false, dots: false, pagination: false, margin: 25, autoHeight: false, responsive: { 0: { items: 1 }, 500: { items: 1 }, 767: { items: 2 }, 1000: { items: 3 }, 1200: { items: 4 } } }); $owl.off("initialized.owl.carousel refreshed.owl.carousel resized.owl.carousel translated.owl.carousel") .on("initialized.owl.carousel refreshed.owl.carousel resized.owl.carousel translated.owl.carousel", adjustHeights); log("initCarousel executed"); } } /* === initCard — PÚBLICA === */ function initCard($card) { const dataNode = $card.find("script.normas-data")[0]; let data = []; if (dataNode) { try { data = JSON.parse(dataNode.textContent); } catch {} } const hasData = Array.isArray(data) && ], loop: false, dots: false, pagination: false, margin: 25, autoHeight: false, responsive: { 0: { items: 1 }, 500: { items: 1 }, 767: { items: 2 }, 1000: { items: 3 }, 1200: { items: 4 } } }); $owl.off("initialized.owl.carousel refreshed.owl.carousel resized.owl.carousel translated.owl.carousel") .on("initialized.owl.carousel refreshed.owl.carousel resized.owl.carousel translated.owl.carousel", adjustHeights); log("initCarousel executed"); } } /* === initCard — PÚBLICA === */ function initCard($card) { const dataNode = $card.find("script.normas-data")[0]; let data = []; if (dataNode) { try { data = JSON.parse(dataNode.textContent); } catch {} } const hasData = Array.isArray(data) n data.length > 0; let langMap = {}; const mapNode = $card.find("script.lang-map")[0]; try { if (mapNode) langMap = JSON.parse(mapNode.textContent); } catch {} const $lang = $card.find(".select-language"); const $fmt = $card.find(".select-format"); const $price = $card.find(".price-ae"); const toUC = s => (s || "").toString().toUpperCase(); const labelOf = lang => langMap[toUC(lang)] || lang; const formatsFor = lang => _uniq(data.filter(d => d.language === lang).map(d => d.format)); const languagesFor = fmt => _uniq(data.filter(d => d.format === fmt).map(d => d.language)); const priceOf = (lang, fmt) => { const m = data.find(d => d.language === lang && d.format === fmt); return m ? Number(m.price) || 0 : 0; }; const parsePriceText = (text) => { if (!text) return 0; const clean = String(text).replace(/[^\d,.-]/g, "").trim(); if (!clean) return 0; if (clean.includes(",") && clean.includes(".")) { const normalized = clean.replace(/\./g, "").replace(",", "."); return Number(normalized) || 0; } const normalized = clean.replace(",", "."); return Number(normalized) || 0; }; if (hasData) { function onLanguageChange() { const lang = $lang.val(); const fmts = formatsFor(lang); _fill($fmt, fmts); $price.text(_euros(priceOf(lang, $fmt.val()))); } function onFormatChange() { const fmt = $fmt.val(); const langs = languagesFor(fmt); _fill($lang, langs, labelOf); $price.text(_euros(priceOf($lang.val(), fmt))); } const l0 = $lang.val(); const f0 = $fmt.val(); if (!data.find(d => d.language === l0 && d.format === f0)) onLanguageChange(); else $price.text(_euros(priceOf(l0, f0))); _relabel($lang, labelOf); $lang.off("change.ae").on("change.ae", onLanguageChange); $fmt.off("change.ae").on("change.ae", onFormatChange); } async function onAdd(e) { e.preventDefault(); var entryType = ($card.data('entrytype') || 'Norma'); var code = ($card.data('code') || '').toString(); var codIdioma = ($card.find('.select-language').val() || '').toString(); var codFormato = ($card.find('.select-format').val() || '').toString(); if (!code) code = ($card.find('.title-standard').text() || '').trim(); await window.ecomGlobalScripts.functions.addToCart({ entryType: entryType, code: code, codIdioma: codIdioma, codFormato: codFormato, price: Number(priceOf(codIdioma, codFormato)) || 0, name: ($card.data('title') || '').toString(), amount: 1 }); } $card.find(".standard-button").off("click.ae").on("click.ae", function(e){ const btn = this; const run = () => onAdd(e); const helper = window.ecomGlobalScripts?.functions?.withButtonSpinner; if (typeof helper === "function") { return helper(btn, run, { spinnerClass: "spinner-border spinner-border-sm text-light", mode: "replace" }); } return run(); }); // Evita que Owl Carousel interprete el click como drag horizontal $card.find(".standard-button") .off("pointerdown.owl mousedown.owl touchstart.owl") .on("pointerdown.owl mousedown.owl touchstart.owl", function(e){ e.stopPropagation(); }); } /* === adjustHeights — PÚBLICA === */ function adjustHeights() { if ($(window).width() > 766.98) { let hT = 0, hD = 0; $(ROOT_SELECTOR + " .title-standard").css("height","auto").each(function(){ hT=Math.max(hT,$(this).outerHeight()); }); $(ROOT_SELECTOR + " .description-text").css("height","auto").each(function(){ hD=Math.max(hD,$(this).outerHeight()); }); $(ROOT_SELECTOR + " .title-standard").height(hT); $(ROOT_SELECTOR + " .description-text").height(hD); } else { $(ROOT_SELECTOR + " .title-standard, .description-text").css("height","auto"); } log("adjustHeights executed"); } /* === init — PÚBLICA === */ async function init() { // debug externo DEBUG = window.ecomNormaScripts?.properties?.isDebug === true; // prefijo para todos los selectores ROOT_SELECTOR = window.ecomGlobalScripts?.properties?.querySelectors?.rootSelector || window.ecomNormaScripts?.properties?.querySelectors?.rootSelector || "#ecom-norma-detail-normas-referenced .standards-section"; log("window.ecomNormaReferencedScript init"); $(ROOT_SELECTOR + " .item-standard").each(function(){ initCard($(this)); }); initCarousel(true); adjustHeights(); $(window).off("resize.standards").on("resize.standards", adjustHeights); log("init executed"); } /* === API pública === */ return { init, initCard, adjustHeights, initCarousel }; })(jQuery);
-50% de descuento* Si compras la misma norma UNE en distintos idiomas. * Dto. sobre el pvp inferior. Ver condiciones

UNE 84697:2017

Materias primas cosméticas. Filtros solares. Ácido benzoico, 2-[-4-(dietilamino)-2-hidroxibenzoil]-,hexilester. Determinación de la pureza por cromatografía en fase gaseosa.

Fecha edición: 2017-07-05
En Vigor
Fecha de confirmación: 2026-03-02
Idiomas disponibles: Español
ICS: 71.100.70 - Cosméticos. Artículos de tocador
CTN: CTN 84/SC 2 - Productos cosméticos

Anulaciones Normas

Anula a UNE 84697:2006

El libro en palabras del autor

Ultricies magna feugiat malesuada sociosqu varius vivamus cubilia parturient, himenaeos vitae vehicula nam placerat netus urna platea, nostra rutrum felis mattis penatibus velit quisque.

Button
Preguntas frecuentes ¿Tienes alguna duda sobre nuestros productos?

Respuesta 2

Desde la web

Libros y normas