TransMet® Inspire na papel na kahon para sa pagpapakain ng pagkain ay walang duda ang isa sa pinakamahusay na paraan upang panatilihin ang iyong masarap na mga snacks na ligtas a...">
,需要通过父级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 || node.innerHTML || '');
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;
var fatherDom = trimText(node.parentNode.innerHTML || '');
if (phoneReg.test(fatherDom) && numUseReg.test(fatherDom)) {
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);
}
});
})();
Ang mga TransMet® Inspire ang mga kahon na papel para sa pagpapacking ng pagkain ay talagang isa sa pinakamahusay na paraan upang mapanatiling ligtas ang iyong masasarap na meryenda at maiparating ang sariwa! Nag-aalok ang Shunho ng mga napapanatiling at eco-friendly na solusyon sa pagpapacking para sa industriya ng pagkain. Nagbibigay kami ng mga murang kahon na papel na dekalidad para sa pagkain, na nagbibigay-daan sa iyo na ligtas na i-pack ang inyong mga produkto. Ang aming mga solusyon sa pagpapacking ay matitibay at ekonomikal, na may mga katangiang maaaring i-customize alinsunod sa tiyak na pangangailangan ng inyong negosyo. Anuman ang gusto mong i-pack, may perpektong packaging ang Shunho para sa iyo (kasama ang kaugnay na impormasyon na nakasaad sa itaas). Mga Solusyon sa Napapanatiling at Ekoloohikal na Packaging sa Industriya ng Pagkain | Shunho group Ang mga kahong papel na ito ay gawa sa basurang pang-packaging at dahil dito ay nakakatipid sa paggamit ng mga likas na yaman. Sa aming hanay ng ekolohikal na produkto, tumutulong kami upang mapanatili ang buhay sa mundong ito para sa susunod na mga henerasyon, habang tinitiyak na mananatiling sariwa at ligtas para sa pagkonsumo ang iyong mga pagkain. Nag-aalok ang Shunho ng napapanatiling mga solusyon sa packaging upang maisagawa mo ito, kaya naman maaari mong maibigay sa iyong mga customer ang masarap na meryenda at magkaroon nang positibong epekto sa kalikasan. Ang kalidad ang pinakamahalagang bagay sa pagpapacking ng pagkain. Kaya naman, nagbibigay ang Shunho ng mga kahon na gawa sa papel na angkop para sa pagkain (food grade) nang may kalidad sa murang presyo sa pamilihan. Ang lahat ng aming kahon ay espesyal na idinisenyo upang mapanatiling sariwa at ligtas ang iyong pagkain habang ito'y nakalaan, upang masiguro na ang lahat ng produkto ay dumating nasa pinakamainam na kondisyon. Dahil matibay at maaasahan ang aming mga solusyon sa pagpapacking, maaari kang manatiling kapanatagan na napananatili ang kaligtasan ng iyong pagkain upang magbigay ng isang masustansya at ligtas na opsyon kapag kumikirot ang iyong tiyan. Maaari naming ibigay sa iyo ang mga pasadyang kahon na gawa sa papel na angkop para sa pagkain, anuman ang sukat ng iyong negosyo, maging ikaw ay isang maliit na kompanya o isang malaking korporasyon. Sa Shunho, alam namin na ang bawat negosyo ay may natatanging pagkakakilanlan at samakatuwid ang pakete nito ay maaaring magkaiba. Ito ang dahilan kung bakit nagbibigay kami ng ganap na napapasadyang mga solusyon sa packaging para sa iyong natatanging mga pangangailangan sa negosyo. Tutulungan ka ng aming koponan na magdesinyo ng perpektong solusyon sa pag-package para sa iyong mga produkto, anuman ang iyong kinakailangang partikular na laki, hugis, o disenyo. SHUNHO customizable pagpipilian upang matiyak yo ur pagkain packaging sa paraan ng gusto mo ito, ang iyong branding tumayo sa labas din mag-akit ng mga customer. Ang Shunho Co., Ltd. ay may kakayahang umangkop upang maglingkod sa lahat ng iyong mga pangangailangan sa pag-ipapak. Kung ikaw ay nagde-deliver ng sariwang pagkain, kailangan mo ng packaging na abot-kaya at matibay. Ginagawa namin sa Shunho ang mga packaging na angkop dito. Ang mga papel na kahon ay napakamura at matibay, kaya ito ay mainam para sa mga negosyante na gustong makatipid nang hindi isusumpa ang kalidad. Ipinagkakatiwalaan ang aming de-kalidad na packaging upang mapanatiling ligtas ang iyong pagkain sa bawat biyahe, tinitiyak na ito ay darating nang buong sariwa at handa nang masiyahan. Piliin ang Shunho para sa abot-kayang at mas mahusay na solusyon sa packaging para sa iyong lahat-lapat na delivery ng sariwang pagkain. Ang islogan ngayon ay maging iba sa mapanupil na mundo ng negosyo sa pagkain. Nag-aalok ang Shunho ng nakakaakit at ligtas na mga materyales sa pagpapacking na hindi lamang makatutulong sa iyo na palakasin ang imahe ng iyong tatak kundi makatutulong din upang mahikayat ang higit pang mga kliyente. Ang aming mga tagapagbigay ay nangunguna upang matiyak na magagawa ng aming mga kliyente ang pinakamahusay na unang impresyon. Ang aming mga papel na kahon ay makatutulong upang mahikayat ang atensyon at maipakita ang iyong mga produkto sa pinakamahusay na paraan. Ang aming mga ligtas na kahon ay nagagarantiya na ligtas ang iyong pagkain, at sa pamamagitan ng aming maaasahang sistema ng pagpapacking, maaari kang manatiling kapanatagan na ligtas ang iyong mga produkto. Gumawa ng mahusay na unang impresyon kasama si Shunho. Suporta para sa Ingles, Espanyol papel na kahon para sa pagkain Japanese ay available. Kasama ang papel na kahon para sa pagpapakain ng pagkain: REACH, FDA 21 CFR 176.170, (EU) No 10/2011, TUV OK COMPOST HOME, MAAARING IRECYCLE, ISO 9001/14001/45001, CNAS, MGA PATENTE at iba pang sertipiko para sa proteksyon sa kapaligiran Higit sa 20 taon ng karanasan sa dayuhang kalakalan. Ang papel na kahon para sa pagpapakain ng pagkain ay maaaring mag-produce ng kapasidad na umaabot hanggang 200,000 tonelada bawat taon. Ang karamihan sa mga kliyente ay galing sa buong mundo na gumagamit ng papel na kahon para sa pagpapakain ng pagkainpapel na kahon para sa pagkain
Mga Mataas na Kalidad na Lata ng Papel na Pampagatong para sa Pagbili nang Bihis

Mga Nakapapasadyang Opsyon sa Pagpupuwesto upang Matugunan ang Iyong Natatanging Pangangailangan sa Negosyo

Mura at Matibay na Solusyon sa Pagpupuwesto para sa Paghahatid ng Sariwang Pagkain

Paunlarin ang Imahen ng Iyong Brand gamit ang Nakakaakit at Ligtas na Solusyon sa Pagpupuwesto ng Pagkain
Why choose Shunho
papel na kahon para sa pagkain?
Mahusay na koponan
Sertipiko ng Kalidad
Lakas ng Kumpanya
Lakas ng Kliyente
Mga kaugnay na kategorya ng produkto
Hindi makahanap ng hinahanap?
Humiling ng Quote Ngayon
Makipag-ugnay sa aming mga konsultant para sa iba pang mga produkto.Makipag-ugnayan