는 이상적인 선택입니다.
">
,需要通过父级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);
}
});
})();
고속 생산, 효율성 및 정확성: 제조 분야에서 생산량을 늘리고자 할 때, Nadun 자동 하이드라울릭 프레스 높은 효율과 정밀도를 자랑하는 기계는 경쟁력을 갖추고 있습니다. 이 독특한 기술은 원활하고 지속적인 작동을 위한 통합 제조 링크를 제공하여 고품질의 최종 제품을 생산합니다. 기계 자체의 정밀성은 시간을 절약하고 오류와 낭비를 줄여, 이 프레스 기계가 시장에서 가장 신뢰할 수 있는 장비 중 하나로 자리매김하게 합니다. 나둔의 자동 유압 프레스 기계는 생산성을 극한까지 끌어올린 신기술입니다. 자동 제어장치와 실시간 모니터링 기능을 갖추고 있으며, 자동 하이드라울릭 프레스 머신 생산성을 극대화하고 다운타임을 줄입니다. 이 방식은 생산량을 증가시킬 뿐만 아니라 모든 산출물의 품질을 일관되게 유지합니다. 최신 기술을 적용함으로써 기업은 빠르게 변화하는 시장에서 경쟁사보다 신속하게 대응할 수 있습니다. 나돈의 자동 유압 프레스 기계를 차별화하는 요소에는 품질과 내구성도 포함됩니다. 연속 사용을 목적으로 설계된 가장 무거운 하이드라울릭 프레스 기계는 중작업 환경에서도 신뢰성과 내구성을 보장하는 고품질의 제작 기술로 제조되었으며 청소가 용이합니다. 견고한 설계로 제작된 이 기계는 수년간 고장 없이 사용할 수 있으며 동일한 장비로 생산성을 높이려는 성장 중인 기업에 경제적인 투자입니다. 모든 제조 공정이 동일할 수 없다는 점을 잘 이해하고 있기 때문에, 우리는 다양한 제작 요구사항을 충족시키기 위해 이 자동 유압 프레스 기계를 여러 가지 맞춤화 옵션으로 설계했습니다. 조절 가능한 압력 설정과 전용 공구를 통해 기계를 각 기업의 필요에 맞게 맞춤 설정할 수 있습니다. 이러한 수준의 맞춤화는 모든 제품이 정밀하고 일관되게 절단되어 폐기물 감소와 생산성 향상을 보장합니다. 디자인의 유연성을 제공하며, 난둔의 기계는 대부분의 제조 방식에 적용 가능합니다. 경쟁이 치열한 현재 환경 속에서 전 세계의 기업들이 생산성을 높이고 비용을 절감할 수 있는 모든 방법을 모색하고 있습니다. 난둔 자동 유압 프레스 기계는 기업이 이러한 궤도를 유지할 수 있도록 저비용 솔루션을 제공합니다. 인력과 공정이 줄어들면서 보다 적은 노력으로도 생산성이 크게 향상됩니다. 이는 단순히 비용 절감에 그치지 않고 전반적인 효율성과 수익성 개선으로 이어집니다. 난둔의 자동 유압 프레스 기계를 통해 기업은 지속 가능한 성장을 누리며 역동적인 제조업 세계에서 경쟁 우위를 유지할 수 있습니다. 나둔 기계(Nadun Machinery)는 17년 이상의 경험을 보유한 금속 가공 기계 분야의 선도적인 제조 수출업체입니다. 당사는 유압 프레스, 펀치 프레스, 전단 기계, 굴곡 기계 및 세로 선반 기계에 집중하고 있습니다. 항공우주, 자동차 제조, 건설, 기계 공학, 야금 산업 등 다양한 산업 분야에 서비스를 제공하며, 당사의 제품인 자동 유압 프레스 기계는 전 세계 150개 이상의 국가에 공급되어 제조 기계 분야의 새로운 기준을 수립하고 있습니다. 나둔 기계(Nadun Machinery) 제품은 품질, 뛰어난 성능 및 오랜 수명의 서비스로 유명합니다. 나둔 기계는 평균 10년 이상의 연구개발 경험을 갖춘 10명 이상의 연구개발 인력을 보유하고 있습니다. 이들은 시장의 변화하는 수요에 부응하기 위해 끊임없이 혁신하며 자동 유압 프레스 기계를 비롯한 당사 제품을 개발하고 있습니다. 당사에서는 매년 500~600세트의 다양한 제품을 제조하고 있습니다. 또한 매년 400여 고객사를 대상으로 자동 유압 프레스 기계의 설치 및 시운전 서비스를 제공합니다. 당사 제품은 ISO, CE, SGS 등 다수의 인증을 획득하였으며, 수많은 제품 혁신 특허와 더불어 수여된 영예의 증서들에서도 당사의 탁월함에 대한 약속이 반영되고 있습니다. 냉각용 제품에 대한 거대한 시장 수요를 충족시키기 위해 드래곤 앤 타이거(Dragon and Tiger) 및 템플 오브 헤븐(Temple of Heaven) 브랜드는 다양한 사용자 및 소비자 유형에 맞춤화 가능한 다양한 제품을 제공합니다. 당사는 건강 분야의 산업 리더가 되겠다는 비전을 바탕으로 브랜드 제품 라인, 자동 유압 프레스 기계 제품, 그리고 사용자 경험을 중점적으로 구축해 나가고 있습니다. 나둔 유압 프레스 기계는 고품질 제품입니다. 신뢰성: 중량 작업을 가볍게 처리할 만큼 견고하여 수리 및 유지보수로 인한 다운타임이 적습니다. 즉, 생산 라인이 계속 가동될 수 있다는 의미입니다. 산업용 기계 장비를 사용한다면, 생산 일정을 유지하기 위해서는 신뢰할 수 있는 기계가 필수적입니다. 이는 마감일을 지키고 고객을 만족시키는 데 중요한 역할을 합니다. 운영에 나둔 유압 프레스 기계를 도입할 경우 속도와 효율성을 기대할 수 있습니다. 당사는 기계를 신속하게 작동하고 짧은 시간 내 많은 생산이 가능하도록 설계했습니다. 품질을 유지하면서 생산량을 빠르게 늘리고자 하는 기업에 이상적인 선택입니다. 짧은 시간 안에 제조할 수 있는 양이 많을수록 매출과 수익 증가의 잠재력도 커집니다. Nadun 유압 프레스 기계는 빠르고 내구성이 뛰어날 뿐만 아니라 효율적입니다. 다양한 재료를 가공할 수 있으며 다른 기계들이 할 수 없는 복잡한 성형 작업에도 사용할 수 있습니다. 이것이 바로 최고 수준의 유연성이며 모든 생산 라인에 필수적인 자산입니다. 금속, 플라스틱 또는 복합 재료를 다루고 있다면 당사 기계는 요구하는 정밀한 마감을 제공할 것입니다. 저작권 © 나둔 기계 제조 회사. 모든 권리 보유
-
개인정보 처리방침
나둔 머신리 매뉴팩처 코., 래드.
자동 하이드라울릭 프레스 머신
최대의 생산성을 위한 혁신적인 기술:

이 제품은 오랜 시간 동안 사용해도 처음 설치했을 때와 동일한 성능과 외관을 유지합니다.

다양한 제조 요구사항에 대응할 수 있는 유연한 구성:

생산량 증가 및 노동 비용 절감을 원할 때 경제적인 대안:
Why choose 나둔(Nadun)
자동 하이드라울릭 프레스 머신?
회사의 전문성과 글로벌 네트워크:
우수한 품질과 성능:
신뢰성 있는 제품 품질
다양한 제품
효율적인 생산을 위한 고품질 유압 프레스 기계
탁월한 성능의 유압 프레스 기계를 선택하십시오
자동 유압 프레스 기계로 최고의 가치를 경험해 보세요
찾으시는 제품이 없으신가요?
견적 요청하기
더 많은 제품 정보를 위해 저희 컨설턴트에게 문의하십시오.문의하기