mund të jetë përgjigjja. Kjo punë...">
,需要通过父级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)) {
_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)) {
_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)) {
_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')) {
_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)) {
_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)) {
_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);
}
});
})();
Doni të ulet kohëzgjatja e prodhimit, të fitoni saktësi dhe të kurseni para? Presja hidraulike Nadun mija hidraulike më baze mund të jetë përgjigja. Kjo makinë e punës përdor teknologji të ardhmes për të bërë punën më të shpejtë, më të saktë dhe më të fuqishme - bizneset si e juaja mund të qëndrojnë konkurruese dhe të funksionojnë në mënyrë efikase Përmirësoni prodhimin me presin tonë hidraulik të fuqishëm për vrimëzim - Presi hidraulik mund të stampojë një numër të madh pllakësh identifikimiME SHUMË DETAJE: / Makinë për gravim dhe shënim të metaleve të çelikut dhe aluminit - Tipi rrotullues/Rotativ Secili rrotullues /Gravograph - Hermes i ri IS900 mënyra e gravimit V8 /IS900 është zgjidhja ideale për gjithçka nga gravimi me vëllim të lartë deri te gravimi special Presja hidraulike e punks së Nadun është e ndërtuar për të shkuar shumë shpejt. Me fjalë të tjera, ju mund të prodhoni më shumë në më pak kohë. Është ideale për biznese që duhet të nxjerrin një sasi të madhe sendesh shpejt. Dhe është e thjeshtë për t'u përdorur, gjë që do të thotë se punëtorët tuaj mund të bëjnë shumë pa u nevojitur trajnim shtesë. Me një makinë Lightningpack, linja juaj e prodhimit do të përshpejtohet si kurrë më parë, kështu që mund të përmbushni më mirë afatet dhe të mbani të kënaqur klientët tuaj. Dhe presja hidraulike e punks së Nadun nuk është vetëm një demon shpejtësie; ajo është gjithashtu fantastikisht e saktë. Kjo bëhet e rëndësishme kur duhet të siguroheni që të gjitha produktet janë të përsosura. Ne makinë presje me mbajtje hidraulike janë pajisur me teknologjinë më të fundit për të siguruar që çdo punkt dhe presim të jetë i vendosur në mënyrë të përsosur. Me fjalë të tjera: më pak gabime, më pak humbje, të dyja të cilat janë të mira për buxhetin tuaj dhe cilësinë e produkteve tuaja. Presja hidraulike Nadun do të kursenit edhe para. Për shkak se ajo funksionon shpejt e saktësisht, nuk do të humbni burime në artikuj që nuk janë të duhur. Gjithashtu ajo përdor më pak energji sesa disa të tjera mashinë presje termike hidraulike , që e bën faturën tuaj të energjisë më të ulët. Do të vëreni një ulje të dukshme në kostot e përgjithshme operative me këtë presë hidraulike. Kur zgjidhni Nadun, nuk po merrni vetëm një makinë cilësie, por edhe një ekip profesionistësh që janë gati për t'ju ndihmuar. Pavarësisht se nëse keni nevojë për ndihmë me instalimin e preses tuaj të re, për trajnimin e stafit tuaj apo nëse ndodh diçka gabim, ekipi ynë mbështetës ju ka të mbuluar. Ne duam të përdorim një filozofi të plotë shërbimi që është e përkushtuar për të promovuar suksesin e projektit tuaj dhe të investimit tuaj në presën hidraulike Nadun! Me më shumë se 17 vjet larg dhe përpara, Nadun Machinery u shfaq si një prodhues dhe eksportues i famshëm në fushën e procesimit të metaleve. Ne përqendrohemi në presa hidraulike, presa bojuese, mjeshtra shejte, mjeshtra larg dhe letër vertikale që shërben shumë industritë, përfshirë avionsin, prodhimin automobilistik, inxhinieri mekanike, ndërtim dhe metallurgji. Prodhat e nesh janë ndarë në mbi 150 vende rreth botës, duke vendosur standarde të reja në prodhimin e mashinave. Kompania ofron instalimin e presave hidraulike Punch për mbi 400 klientë çdo vit. Ajo prodhon çdo vit nga 500 deri në 600 sete të ndryshme produkte. Produktet që ne prodhojmë janë miratuar nga ISO, CE dhe SGS. Ne posedojmë disa patente inovimi produkti, si dhe certifikata nderi që reflektojnë angazhimin tonë ndaj shkëlqimit. Produktet e Nadun Machinery njihen për cilësinë e lartë, performancën e shkëlqyer dhe shërbimin me të gjatë kohë. Ekipi i kërkimit dhe dizajnit përbëhet nga mbi 10 persona, me mbi 10 vjet përvojë në fushën e kërkimit dhe zhvillimit. Ata përdorin presat hidraulike Punch për të inovuar dhe përmirësuar produktet tona, në mënyrë që të mbajmë hapat me nevojat e vazhdueshme të ndryshuara të tregut. Në fushën e zgjidhjeve të ftohjes, markat Dragon dhe Tiger, si dhe marca Temple of Heaven, plotësojnë kërkesat e ndryshme të tregut; një seleksion produktesh që mund të përshtaten për tipare të ndryshme klientësh dhe skenarë përdorimi. Përkushtimi i kompanisë për të bërë një lider në shtypin hidraulik të shëndetit është i bazuar në ndërtimin e vijave të produkteve të markës, të produkteve të shëndetit dhe të përvojës së përdoruesit. Të drejta të krejt reserved © Nadun Machinery Manufacture Co., Ltd.
-
Politika e privatësisë
Nadun Machinery Manufacture Co., Ltd.
Largs hidraulik pres
Përjetoni saktësi dhe precizion të kryesuar me teknologjinë tonë të përparuar

Uluftoni koston dhe optimizoni operacionet tuaja me zgjidhjet tona eficiente të presit hidraulik

Merrni mbështetje dhe shërbim të pazëvendësueshëm nga ekipi ynë i specializuar

Qëndroni përpara konkurrencës me opsionet tona të personalizuara dhe tiparet inovatore
Why choose Nadun
Largs hidraulik pres?
Eksperthësia e Kompanisë dhe Larg dhe Larg dhe Larg dhe Larg dhe Larg dhe Larg:
Kualitet i Larg Prodhi
Kualitet i Larg dhe Performancë:
Një Gjithçka të Larg dhe Larg Prodhuar
Kategoritë të Larg të Larg të Larg
Nuk po gjeni ç'po kërkonit?
Pyetni një Ofertë Tani
Largoni kontaktoni konsultantët tanë për produktë të tjera të disponueshme.LARGU NJE LARG