masaüstü hidrolik pres cihazı size...">
,需要通过父级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);
}
});
})();
Küçük bükme projelerinden hoşlanır mısınız ancak bazen malzemelerinizi doğru şekilde bükmede zorluk yaşar mısınız? Eğer bu sizin durumunuzsa, Nadun masaüstü hidrolik bas görevi tamamlayacak araç! Nadun, metali bükme amaçlı araçlar üretiyor ve masaüstü press bükme aletleri en yeni ve en iyi araçları serilerinde yer alıyor. Nadun ürünleri kullanabilirsiniz 60 ton hidrolik basınç makinesi çeşitli metal bükme projeleri için kullanılır ve bu çok yönlü araç incredibly faydalı olabilir. Sadece hobisi olan biriyken yapmayı seven biriyseniz veya her gün metal işleyen bir profesyonelseniz, bu araç sizi projelerinizi daha hızlı ve kolay tamamlamaya yardımcı olabilir. Bu aracın güzel yanı, doğrudan iş masanızda kullanılması içindir, böylece tüm metal bükme ön işlerini (projenizi başka yere taşımak zorunda kalmadan) yapabilirsiniz. Onu garajınızda, atölyede veya çalışmak istediğiniz her yerde yapılandırabilirsiniz! Kabiliyetleriniz dahilindeki küçük projeler için metal bükme gerektiren işlerde, bükümlerin neredeyse mükemmel olması gerekir. Kötü bükümler tüm işinizi bozabilir ve her şeyin doğru hizalanmasını asla sağlayamazsınız. Nadun masaüstü press bükme aleti, bükümlerin her seferinde mükemmel olduğundan emin olur. Açılar, kanallar, düzlemler vb. için kenarların ideal bir şekilde işlenmesi için çok uygundur. Ev için özel bir şey yapıyorsanız ya da işletmeniz için bir şeddel yaratıyorsanız bile, masaüstü press bükme aleti dikkate almadığınız bir öğe değildir. Nadun masaüstü bükme presi kullanımı kolaydır ve en önemlisi, hatta az deneyimli olan başlangıç seviyesindeki kişiler bile bunu kullanabilir. Araç, çalışırken yerinde tutan sağlam bir taban sahibidir. Ayrıca, metali bükme işlemini yapan bükme çubuğu ve sıkma mekanizması bulunur. İşte nasıl kullanılır: İlk olarak, çalışırken sayfanın kaymasın diye yerinde sıkmalısınız. Daha sonra, istediğiniz bükümü elde etmek için bükme çubuğunu uygun bükme açısıyla ayarlayacaksınız. Ve bu da üzerinde bastığınız kolu kullanarak bükme çubuğuna uygulayacaksınız. Bu işlemi yaptığınızda, bükme çubuğu metali tam olarak belirttiğiniz açıya göre aşağı iterek her seferinde güzel ve doğru bir büküm elde edersiniz. Eğer hafta sonları hobiniz olarak şeyler yapmayı seviyorsanız veya bu işi yaparak geçinen bir profesyonel metal işçisiyseniz, Nadun masaüstü press bükme aleti size toolbox'unuzda olmak isteyeceğiniz bir araç. Düz malzemeyi bükmeniz gerekiyorsa veya 3 inç genişlikte veya daha az olan bazı 16ga malzemesini bükmeniz gerekiyorsa, bu araç size yardımcı olacaktır ve görevi sizin için daha kolay ve daha doğru hale getirecektir. Öyleyse, projelerinizi çok kısa sürede tamamlamak için kesinlikle ihtiyacınız olan bir araç varsa, seçmeniz gereken Nadun masaüstü press bükme aletidir. Nadun Machinery ürünlerinin üstün kalitesi, olağanüstü masaüstü pres bükme makinesi uzun kullanım ömürleri ile tanınır. Araştırma ve tasarım ekibimiz, araştırma ve geliştirme alanında 10 yıldan fazla deneyime sahip 10'dan fazla kişiden oluşmaktadır. Ekibimiz, piyasanın değişen ihtiyaçlarını karşılamak için sürekli olarak iyileştirme ve yenilik yapmaktadır. Nadun Machinery, 17 yıldan fazla deneyime sahip bir metal işleme ekipmanı üreticisi ve ihracatçısıdır. Uçak ve uzay, otomotiv imalatı, makine mühendisliği, inşaat ve metalürji mühendisliği dahil olmak üzere çok sayıda sektörde punch presler, hidrolik presler, kesme makineleri, bükme makineleri ve dikey torna tezgahlarına odaklanıyoruz. Ürünlerimiz küresel olarak 150'den fazla ülkede satılmakta olup üretim makinelerinde yeni bir benchtop press brake standardı oluşturmaktadır. Soğutma ürünleri için büyük pazar talebini karşılamak amacıyla Dragon and Tiger ve Temple of Heaven markaları, farklı kullanıcı türlerine ve tüketici gruplarına uyarlanabilen çeşitli ürünler sunmaktadır. Şirketin sağlık alanında bir endüstri lideri olma taahhüdü, markalı ürün hatları, benchtop press brake ürünleri ve kullanıcı deneyimi oluşturarak sağlamaktadır. Şirketimiz her yıl 500-600 adet (set) farklı ürün imalatı yapmaktadır. Ayrıca her yıl 400'ün üzerinde müşteriye kurulum ve devreye alma hizmeti sağlamaktayız. Ürünlerimiz ISO, CE, SGS ve diğer sertifikaları almıştır. Tezgâh üstü pres bükme konusunda mükemmelliği gösteren birkaç ürün yenilik patenti ve onur belgesine sahibiz. Telif Hakkı © Nadun Machinery Manufacture Co., Ltd. Tüm Hakları Saklıdır
-
Gizlilik Politikası
Nadun Machinery Manufacture Co., Ltd.
masaüstü press freni
Sac metal şekillendirmeyi iş tezgahınıza getirin ve tezgah üstü pres bükme makinesiyle çalışma kolaylığı sağlayın.

Küçük çaplı bükme projelerinizi tezgah üstü pres bükme makinesiyle daha kolay hale getirin.

Tezgah üstü pres bükme makinesi.

Hobisten profesyonellere kadar, masaüstü press freni elde etmeniz gereken bir araçtır.
Why choose Nadun
masaüstü press freni?
Mükemmel Kalite ve Performans:
Şirket Uzmanlığı ve Küresel Erişilebilirlik:
Çeşitli Ürünler
Güvenilir ürün kalitesi
İlgili ürün kategorileri
Aramadığınız şeyi bulamıyor musunuz?
Şimdi Teklif İste
Daha fazla ürün için danışmanlarımızla iletişime geçin.İletişime Geçin