producten is cruciaal om de veiligheid, kwaliteit en houdbaarheid van het product te waarborgen. Als B2B-koper kunt u ...">
,需要通过父级DOM结构来判断
*/
var trackActionPhone = function (node) {
var nodeInnerText = node.innerText || '';
if (!limitRegLength(nodeInnerText)) return;
var nodeText = trimText(nodeInnerText);
if (nodeText.length < 5 || nodeText.length > 20) return false;
var type =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'click';
var str = trimText(node.href || nodeText || '');
if (phoneReg.test(str) && numUseReg.test(str)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
phone: nodeText,
},
}, '*');
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
/** 排查父级嵌套非标签场景,并且对dom的正则校验做一个性能兜底,通过控制innerText的长度,来确保正则的性能 */
var fatherText = trimText(node.parentNode.innerText || '');
if (fatherText.length < 5 || fatherText.length > 20) return false;
if (phoneReg.test(fatherText) && numUseReg.test(fatherText)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
phone: nodeText,
},
}, '*');
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
return false;
};
window.addEventListener('click', function (e) {
var node = e.target;
/** 社媒点击 */
var appName = '';
var getAppAriaLabel =
node.ariaLabel || node.parentNode.ariaLabel || '';
if (mediaList.includes(getAppAriaLabel.toLowerCase())) {
appName = getAppAriaLabel;
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'a'
) {
appName = getMediaName(node.href) || getMediaName(node.alt);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'img'
) {
appName = getMediaName(node.alt) || getMediaName(node.src);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'i'
) {
appName = getMediaName(node.className);
}
if (appName) {
_paq.push(['trackEvent', 'click', 'contactApp', appName]);
return;
}
/** 联系方式点击 */
if (trackActionPhone(node, 'click')) return;
if (node.nodeName && node.nodeName.toLowerCase() === 'a') {
var val = node.href;
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: val,
},
}, '*');
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
if (node.nodeName && node.nodeName.toLowerCase() === 'i') {
var val = node.className;
var content = node.parentNode.href || '';
if (val.includes('email')) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: content,
},
}, '*');
_paq.push(['trackEvent', 'click', 'email', content]);
return;
}
}
var nodeChildList = node.childNodes;
for (var i = 0; i < nodeChildList.length; i++) {
if (nodeChildList[i].nodeType !== 3) continue;
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '');
if (!limitRegLength(val)) continue;
if (emailReg.test(val)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: val,
},
}, '*');
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
trackNumberData(node);
});
window.addEventListener('copy', function (e) {
if (trackActionPhone(e.target, 'copy')) return;
var text = e.target.textContent;
if (!text) return;
var val = text.replace(/\s:?/g, '');
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: val,
},
}, '*');
_paq.push(['trackEvent', 'copy', 'email', val]);
return;
}
trackNumberData(e.target);
});
}
trackContactInit();
/**
* 基于custom_inquiry_form.js 以及 form.js 对于询盘表单提交的实现,来反推询盘表单的input标签触发,用来收集意向客户
* 1. 缓存的KEY:TRACK_INPUT_ID_MTM_00;
* 2. 缓存策略 - lockTrackInput:单个页面内,10分钟内,不重复上报
*/
function trackActionInput() {
const CACHE_KEY = 'TRACK_INPUT_ID_MTM_00';
const pathName = window.location.hostname + window.location.pathname;
var lockTrackInput = function () {
try {
const lastCacheData = localStorage.getItem(CACHE_KEY);
if (!lastCacheData) return false;
const cacheData = JSON.parse(lastCacheData);
const cacheTime = cacheData[pathName];
if (!cacheTime) return false;
return Date.now() - cacheTime < 1000 * 60 * 10; // 10分钟内,不重复上报
} catch (error) {
console.error('lockTrackInput Error', error);
return false;
}
};
var setInputTrackId = function () {
try {
const curCacheData = localStorage.getItem(CACHE_KEY);
if (curCacheData) {
const cacheData = JSON.parse(curCacheData);
cacheData[pathName] = Date.now();
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
return;
}
const cacheData = {
[pathName]: Date.now(),
};
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
} catch (error) {
console.error('setInputTrackId Error', error);
}
};
var getInputDom = function (initDom) {
var ele = initDom;
while (ele) {
/**
* isWebSiteForm 是站点的表单
* isChatWindowForm 是聊天窗口的表单
*/
/** 旧模板表单 */
var isWebSiteForm = !!(
/crm-form/i.test(ele.className) && ele.querySelector('form')
);
/** 1:新模板自定义表单、2:Get a Quote 弹框表单 */
var isWebSiteFormNew = !!(
/inquiry/i.test(ele.className) && ele.querySelector('form')
);
if (isWebSiteForm || isWebSiteFormNew) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'page']);
setInputTrackId();
return;
}
/** Mkt会话触达-聊天弹框的表单输入: MKT由于是iframe嵌入,所以MKT的上报,会单独写到MKT-form代码上 */
var isInquiryChatForm = !!(
/comp-form/i.test(ele.className) && ele.querySelector('form')
);
if (isInquiryChatForm) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'chat']);
setInputTrackId();
return;
}
/** 向上查找父节点 */
ele = ele.parentNode;
}
};
function initInputListener() {
var inputUseDebounce = function (fn, delay) {
var timer = null;
var that = this;
return function () {
var args = Array.prototype.slice.call(arguments);
if (timer) clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(that, args);
}, delay);
};
};
var optimizeGetInputDom = inputUseDebounce(getInputDom, 300);
window.addEventListener('input', function (e) {
/** 如果已经上报过,则不再上报 */
if (lockTrackInput()) return;
optimizeGetInputDom(e.target);
});
}
try {
initInputListener();
} catch (error) {
console.log('initInputListener Error', error);
}
}
trackActionInput();
}
/** 第三方消息上报:目前主要是针对全点托管会话;在msgCollect/index.js中调试,访问test.html */
function thirdMsgCollect() {
/** 先检测是否是stayReal托管:如果stayReal脚本都没有,那么说明当前站点未开启stayReal会话托管 */
const scriptList = Array.prototype.slice.call(
document.querySelectorAll('script'),
);
const checkStayReal = () =>
!!scriptList.find((s) => s.src.includes('stayreal.xiaoman.cn'));
if (!checkStayReal()) return;
/** 缓存当前消息队列的最后一条消息id */
const CACHE_KEY = 'CACHE_KEY_MONITOR';
const setCache = (msgIndex) => {
/** 对缓存KEY进行base64转码处理 */
const cacheMsgIndex = btoa(msgIndex);
localStorage.setItem(CACHE_KEY, cacheMsgIndex);
};
const getCache = () => {
const cacheMsgIndex = localStorage.getItem(CACHE_KEY);
if (cacheMsgIndex) return Number(atob(cacheMsgIndex));
return -1;
};
/** 拉取最新msg列表 */
const pullMsgList = () => {
const msgEleList = Array.prototype.slice.call(
document.querySelectorAll('#chat-list li'),
);
const msgIds = [];
const msgMap = msgEleList.reduce((acc, item) => {
const sendTime = item
.querySelector('.message-data-time')
.textContent.trim();
const sendContent = item.querySelector('.message').textContent.trim();
/** msg带有class:other-message的是访客消息,my-message的是客服消息 */
const isOtherMessage = item
.querySelector('.message')
.classList.contains('other-message');
const msgId = item.querySelector('.message').getAttribute('id');
const msgItemData = {
msgId,
user: isOtherMessage ? 'visitor' : 'official',
time: sendTime,
content: sendContent,
};
msgIds.push(msgId);
acc[msgId] = msgItemData;
return acc;
}, {});
return {
ids: msgIds,
dataMap: msgMap,
};
};
/** 加密并上传消息数据 */
let ENCRYPT_KEY = 'de29f1aab63ab033';
let ENCRYPT_IV = 'b8d2badf875e76ac';
const baseUrl = 'https://cms.xiaoman.cn';
// var getEncryptConfig = function () {
// const url = baseUrl + '/shop-api/innerApi/getKeyIv'
// $.get(
// url,
// function (result) {
// console.log('result', result)
// if (Number(result.code) === 0 && result.data.key && result.data.iv) {
// ENCRYPT_KEY = result.data.key
// ENCRYPT_IV = result.data.iv
// uploadMsgData()
// } else {
// /** 如果获取失败,则重试 */
// setTimeout(() => {
// getEncryptConfig()
// }, 1000)
// }
// },
// 'json'
// )
// }
// getEncryptConfig()
const encryptMsg = function (msgData) {
const enc = new TextEncoder();
// 转字节
const keyBytes = enc.encode(ENCRYPT_KEY);
const ivBytes = enc.encode(ENCRYPT_IV);
const plainBytes = enc.encode(msgData);
// 导入密钥并加密
return crypto.subtle
.importKey('raw', keyBytes, { name: 'AES-CBC' }, false, ['encrypt'])
.then(function (cryptoKey) {
return crypto.subtle.encrypt(
{ name: 'AES-CBC', iv: ivBytes },
cryptoKey,
plainBytes,
);
})
.then(function (encryptedBuffer) {
// 转 base64 返回
return btoa(
String.fromCharCode(...new Uint8Array(encryptedBuffer)),
);
})
.catch((err) => {
return Promise.reject(err);
});
};
let uploadFlag = false;
const uploadMsgData = function () {
if (uploadFlag) return;
uploadFlag = true;
const { ids, dataMap } = pullMsgList();
let cacheMsgIndex = getCache();
const msgLen = ids.length;
if (!msgLen) {
// 消息DOM未挂载 || 消息DOM已挂载,但是消息列表为空
uploadFlag = false;
return;
}
if (msgLen - 1 < cacheMsgIndex) {
/** 针对站点挂后台一段时间,消息列表会自动塞入重复消息,导致消息有重复,刷新后又重置回正常消息列表,所以这里需要更新锚点下标 */
cacheMsgIndex = msgLen - 1;
setCache(cacheMsgIndex);
uploadFlag = false;
return;
}
if (msgLen - 1 === cacheMsgIndex) {
// 缓存的最后一次发送的消息ID是最后一条(说明当前消息均已经上报),则不跳过本地上报
uploadFlag = false;
return;
}
const currentMsgIds = ids.slice(cacheMsgIndex + 1, msgLen);
const currentMsgData = currentMsgIds.map((id) => dataMap[id]);
const mtmId = window.matomo_site_id_cookie_key || ''; // 获取mtm会话id
const msgBody = {
mtmId,
curl: window.location.href,
msgList: currentMsgData,
};
const msgBodyStr = JSON.stringify(msgBody);
encryptMsg(msgBodyStr)
.then(function (encryptedMsg) {
console.log('encryptedMsg:', encryptedMsg, msgBodyStr);
const url = baseUrl + '/shop-api/External/ListenSiteActiveStatus';
$.ajax({
type: 'POST',
url,
data: JSON.stringify({ d_v: encryptedMsg }),
contentType: 'application/json',
success: function (result) {
if (Number(result.code) === 0) {
// 更新消息队列
setCache(msgLen - 1);
}
uploadFlag = false;
},
error: function (err) {
console.error(err, '请求异常');
uploadFlag = false;
},
});
})
.catch((err) => {
console.error(err, '数据加密失败');
uploadFlag = false;
});
};
/** 监控chat-list的DOM变更 */
const initChatListObserver = () => {
// 需要监听的 DOM 节点
const target = document.getElementById('chat-list');
if (!target) return;
// 回调函数
const callback = function (mutationsList, observer) {
for (const mutation of mutationsList) {
console.log('mutation', mutation);
if (mutation.type === 'childList') {
uploadMsgData();
}
}
};
// 配置
const config = {
childList: true, // 监听子节点的增删
subtree: true, // 是否也监听后代节点
};
// 创建 observer
const observer = new MutationObserver(callback);
// 开始监听
observer.observe(target, config);
};
let testCount = 30;
let itv = null;
const checkChatDom = () => !!document.querySelector('#vc-model');
const initTalkCheck = () => {
itv = setTimeout(() => {
console.log('checkChatDom', checkChatDom(), testCount);
if (!checkChatDom() && testCount > 0) {
testCount--;
initTalkCheck();
return;
}
clearTimeout(itv);
uploadMsgData();
initChatListObserver();
}, 1500);
};
initTalkCheck();
}
try {
gtmTrack();
thirdMsgCollect();
console.log('inserted gtm code');
} catch (error) {
console.error('gtmTrack Error', error);
}
});
})();
De keuze van verpakkingsmateriaal voor voedingsmiddelen en Producten is cruciaal voor het waarborgen van productveiligheid, -kwaliteit en houdbaarheid. Als B2B-koper kunt u bezorgd zijn over de geschiktheid van materialen, naleving van voedselveiligheidsvoorschriften en het milieu-effect van uw verpakkingskeuzes. In dit artikel vindt u essentiële informatie om milieuvriendelijke voedselverpakkingsmaterialen te beoordelen, met nadruk op specificaties, kwaliteit, betrouwbaarheid van leveranciers, kostenfactoren en veelvoorkomende uitdagingen. Bij het kiezen van verpakkingsmateriaal voor voedsel moeten verschillende belangrijke factoren worden overwogen om te garanderen dat de verpakking voldoet aan zowel veiligheids- als functionele eisen. Ten eerste moet het materiaal voldoen aan de relevante voedselveiligheidsvoorschriften, zoals de FDA- of EU-normen, afhankelijk van uw markt. Deze conformiteit waarborgt dat het materiaal veilig is voor direct contact met voedsel en geen schadelijke stoffen in het voedsel vrijmaakt. Daarnaast zijn de barrièreeigenschappen van het verpakkingsmateriaal van cruciaal belang. Bijvoorbeeld: materialen met een hoge vocht- en zuurstofbarrière zijn essentieel voor producten die een langere houdbaarheid vereisen. Milieuvriendelijke opties, zoals het TransMet-papier van Shunho Creative met zijn aluminiumlaag, bieden uitstekende barrièreeigenschappen en zijn tegelijkertijd recycleerbaar en afbreekbaar. Maatwerk is een andere belangrijke factor. Verschillende soorten voedingsmiddelen vereisen mogelijk specifieke verpakkingsoplossingen. Zo kunnen zure voedingsmiddelen materialen vereisen die bestand zijn tegen corrosie, terwijl diepvriesproducten materialen nodig hebben die lage temperaturen kunnen weerstaan zonder de integriteit te compromitteren. De kwaliteit van voedingsverpakkingsmaterialen beoordelen houdt het onderzoeken van diverse technische specificaties in. Belangrijke specificaties zijn dikte, treksterkte en verzegelingsmogelijkheden. Deze eigenschappen beïnvloeden hoe goed de verpakking presteert tijdens het vullen, vervoeren en opslaan. Dikte : Een dikker materiaal kan betere bescherming bieden, maar kan ook extra gewicht en kosten met zich meebrengen. Beoordeel de afweging tussen bescherming en kosteneffectiviteit op basis van de behoeften van uw product. Treksterkte : Dit verwijst naar het vermogen van het materiaal om spanning te weerstaan. Sterkere materialen verminderen het risico op scheuren of barsten tijdens verwerking en vervoer, wat cruciaal is voor voedselveiligheid. Afdichtingsmogelijkheden Zorg ervoor dat het materiaal effectief kan worden afgesloten om besmetting en bederf te voorkomen. Een juiste afsluiting verlengt ook de houdbaarheid van het product. Kwaliteitstests, zoals barsttests en tests voor de dampdoorlatendheid voor vocht (MVTR), kunnen helpen bevestigen dat het materiaal aan uw specifieke eisen voldoet. Het vinden van een betrouwbare leverancier voor voedselfolies is essentieel om kwaliteitsnormen in stand te houden en tijdige levering te garanderen. Begin met het beoordelen van potentiële leveranciers op basis van hun certificaten, productiemogelijkheden en ervaring in de voedselfoliesector. Zoek naar leveranciers met gevestigde kwaliteitscontroleprocessen, waaronder regelmatige audits en producttests. Leveranciers zoals Shunho Creative, die bekendstaan om hun milieuvriendelijke oplossingen en geavanceerde productietechnieken, kunnen de benodigde betrouwbaarheid en consistentie in productkwaliteit bieden. Bovendien dient u leveranciers te overwegen die aanpassingsmogelijkheden bieden. Een leverancier die uw specifieke behoeften begrijpt, kan op maat gemaakte oplossingen leveren die de verkoopbaarheid van uw product verbeteren, terwijl veiligheid en naleving van voorschriften gewaarborgd blijven. De kosten van verpakkingsmaterialen voor levensmiddelen kunnen sterk variëren, afhankelijk van verschillende factoren zoals het soort materiaal, de bestelomvang en de vereisten voor aanpassing. Over het algemeen leidt grootschalige aankoop tot lagere kosten per eenheid, maar het is belangrijk om de totale eigendomskosten in ogenschouw te nemen, waaronder vervoer, opslag en eventuele verspilling door bederf of beschadiging. Aanpassingsmogelijkheden zijn weliswaar voordelig, maar kunnen ook de kosten verhogen. Bespreek uw specifieke behoeften met leveranciers om een evenwicht te vinden tussen functionaliteit en budget. Bijvoorbeeld: milieuvriendelijke materialen zoals het TransMet-papier van Shunho kunnen hogere initiële kosten met zich meebrengen, maar bieden op termijn besparingen door lagere verwijderingskosten en een versterkte merkwaarde dankzij duurzaamheid. Bovendien kunnen levertijden van invloed zijn op de kosten. Zorg ervoor dat u productie- en verzendtijden meeneemt bij het plannen van uw voorraad. Een betrouwbare leverancier geeft u duidelijke tijdlijnen en eventuele prijsfluctuaties op basis van marktomstandigheden. Ervaring met holografisch papier in de internationale handel gedurende meer dan 20 jaar. Laserpapier heeft een productiecapaciteit van maximaal 200.000 ton per jaar. Ondersteuning voor Engels, Spaans en Japans is beschikbaar bij holografische papiersticker. Met holografische papiersticker: REACH, FDA 21 CFR 176.170, (EU) nr. 10/2011, TÜV OK COMPOST HOME, HERGEBRUIKBAAR, ISO 9001/14001/45001, CNAS, OCTROOIEN en andere certificaten voor milieubescherming Regenboog inpakpapier, waarvan de meerderheid van de klanten afkomstig is uit de meest prestigieuze 500 bedrijven ter wereld Bij het kiezen van verpakkingsmaterialen voor voedsel moeten kopers zich bewust zijn van veelvoorkomende uitdagingen die zich tijdens de productie- en distributieprocessen kunnen voordoen. Materiële verenigbaarheid : Sommige materialen kunnen nadelig reageren met bepaalde voedingsmiddelen, wat leidt tot besmetting. Controleer altijd de compatibiliteit op basis van de chemische eigenschappen van het voedingsproduct. Zo moeten zuurhoudende producten worden verpakt in materialen die bestand zijn tegen corrosie. Zegelintegriteit : Slechte afdichting kan leiden tot bederf en besmetting. Zorg ervoor dat uw materialen zijn getest op afdichtsterkte en overweeg het gebruik van geavanceerde afdichttechnologieën om de betrouwbaarheid te verbeteren. Milieubelasting : Steeds meer kopers zijn bezorgd over het milieu-effect van verpakkingsmaterialen. Het kiezen voor recycleerbare en afbreekbare opties, zoals het TransMet-papier van Shunho Creative, kan deze zorg verminderen en tegelijkertijd aanspreken bij milieubewuste consumenten. Leveringsketensonderbrekingen : Vertragingen in de toeleveringsketen kunnen leiden tot voorraadtekorten. Het opbouwen van een goede relatie met uw leverancier en het hebben van noodplannen—zoals alternatieve materialen of leveranciers—kan dit risico verminderen. Door deze veelvoorkomende problemen proactief aan te pakken, kunt u een soepeler inkoopproces waarborgen en de kwaliteit en veiligheid van uw voedingsproducten behouden. het selecteren van het juiste verpakkingsmateriaal voor voedingsmiddelen en TransMet® Zilver vereist zorgvuldige afweging van diverse factoren, waaronder materiaaleigenschappen, betrouwbaarheid van de leverancier en kostenbeheer. Door milieuvriendelijke opties te gebruiken en de technische vereisten te begrijpen, kunt u zowel de productveiligheid als de marktaantrekkelijkheid verbeteren. Verpakkingsmateriaal voor voedingsmiddelen
Belangrijke Overwegingen
Hoe de kwaliteit van verpakkingsmaterialen voor voedingsmiddelen te beoordelen
Betrouwbare leveranciers voor voedingsverpakkingen
Kostenfactoren bij groothandelsbestellingen van verpakkingsmaterialen voor voedingsmiddelen
Why choose Shunho
Verpakkingsmateriaal voor voedingsmiddelen?
Bedrijfskracht
Uitstekend team.
Kwaliteitscertificaat
Klantsterkte
Veelvoorkomende problemen met verpakkingsmaterialen voor voedingsmiddelen en oplossingen
Vindt u niet wat u zoekt?
Vraag nu een offerte aan
Neem contact op met onze adviseurs voor meer beschikbare producten.Neem contact op