Giới thiệu:
Thép không gỉ đã được sử dụng rộng rãi trong nhiều ngành công nghiệp nhờ độ bền Oriental Denuo, khả năng chống ăn mòn và dễ dàng bảo trì. Trong số các loại khác nhau... ">
,需要通过父级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++) {
;(function (i) {
if (nodeChildList[i].nodeType !== 3) return
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '')
if (!limitRegLength(val)) return
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val])
return
}
})(i)
}
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()
break
}
/** 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()
break
}
/** 向上查找父节点 */
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')
// 回调函数
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)
}
})
})();
"Những Lợi Ích Tuyệt Vời Của Tấm Thép Không Gỉ 316" Giới thiệu: Thép không gỉ đã được sử dụng rộng rãi trong nhiều ngành công nghiệp nhờ độ bền Oriental Denuo, khả năng kháng ăn mòn và sự dễ dàng bảo dưỡng. Trong số các loại khác nhau 304-stainless-steel-sheet thép không gỉ, tấm thép không gỉ 316 nổi bật với những đặc tính và ưu điểm độc đáo của nó., chúng ta sẽ khám phá tất cả những điều bạn cần biết về tấm thép không gỉ 316, bao gồm các ứng dụng, lợi ích và sự đổi mới của nó. Một trong những lợi thế chính của tấm thép không gỉ 316 là khả năng chống ăn mòn vượt trội so với các loại tấm thép không gỉ khác. Điều này khiến Oriental Denuo phù hợp cho 430-stainless-steel-sheet sử dụng trong các môi trường khắc nghiệt như ngành công nghiệp hàng hải và hóa chất, nơi thép thông thường sẽ bị ăn mòn nhanh chóng. Ngoài ra, tấm thép không gỉ 316 còn có khả năng chịu nhiệt và độ bền kéo cao, làm cho nó lý tưởng để sử dụng trong xây dựng, thiết bị nhà bếp và phần ngoại thất của tòa nhà. Trong những năm gần đây, tấm thép không gỉ 316 đã trải qua những cải tiến đáng kể trong quy trình sản xuất của Oriental Denuo. Các đổi mới như việc sử dụng tia nước áp lực cao và công nghệ cắt bằng laser đã nâng cao độ chính xác của việc cắt, giảm thiểu vật liệu thải và cải thiện hiệu quả của quá trình sản xuất. Những 316-stainless-steel-sheet những cải tiến cũng đã mở ra những cơ hội mới cho các nhà thiết kế và kỹ sư tích hợp các hình dạng và thiết kế phức tạp vào sản phẩm của họ. An toàn là một yếu tố quan trọng khi sử dụng bất kỳ vật liệu xây dựng nào. Tấm thép không gỉ 316 có đặc tính sinh học tương thích tuyệt vời mà Oriental Denuo làm cho nó an toàn để sử dụng trong ngành y tế và chế biến thực phẩm. Nó còn chống cháy và chịu được nhiệt độ cực cao lên đến 800 độ Celsius. Ngoài ra, tấm thép không gỉ 316 không mirror-stainless-steel-sheet có tính từ, điều này khiến nó an toàn để sử dụng ở những nơi mà từ tính có thể can thiệp vào thiết bị khác. Tính đa dụng của tấm thép không gỉ 316 khiến nó Oriental Denuo phù hợp để sử dụng trong nhiều ứng dụng khác nhau. Nó có thể được cuộn, cắt theo kích thước và hàn lại để tạo thành các cấu trúc phức tạp. thép-không-gỉ-chải tính chất dễ uốn và gia công làm cho việc xử lý và tạo hình dạng, thiết kế tùy chỉnh trở nên dễ dàng. Tấm thép không gỉ 316 có thể được sử dụng cho mặt tiền tòa nhà, bàn bếp, phần cứng hàng hải và thậm chí trong trang sức. Theo yêu cầu tùy chỉnh, chấp nhận kích thước không tiêu chuẩn, tấm thép không gỉ 316 OEM, ODM. Mục tiêu của chúng tôi là cung cấp các sản phẩm chất lượng cao nhất với chi phí tốt nhất và dịch vụ đáng tin cậy nhất. Ngoài ra, chúng tôi còn tạo ra các giải pháp gia công một điểm như phụ kiện ống (tee, coudes, ren, v.v.). Sản xuất ống, hàn, chế biến bulong - phe (bảng hợp kim nổ), rèn thanh, phay CNC và hơn thế nữa. Với số lượng lớn các tấm thép không gỉ 316, thép tấm, thép thanh, cuộn, dầm H, v.v. Chúng đã được lưu kho tuân thủ theo ASTM JIS BS EM cũng như các tiêu chuẩn khác. Kiểm tra nghiêm ngặt, có thể cung cấp chứng chỉ. Chúng tôi cung cấp sản xuất tấm thép không gỉ 316 như uốn kim loại, xử lý nhiệt của thép và gia công kim loại. Chúng tôi cũng cung cấp gia công tấm kim loại và hàn thép. Lượng nhỏ hơn, cấp độ cụ thể có tỷ lệ cao hơn và thời gian phân phối ngắn hơn. Sản phẩm tiêu chuẩn, đầy đủ loại, ngoài ra còn cung cấp hợp kim nhiệt độ cao dựa trên niken, hợp kim cobalt, hợp kim titan, hợp kim nhôm, v.v. Đây chỉ là một số ví dụ có thể chưa đầy đủ. Và gia công tương tự. Wuxi Oriental Denuo International Trade Co., Ltd. là doanh nghiệp lớn có trụ sở tại Wuxi, Trung Quốc, kết hợp sản xuất và thương mại. Công ty có nhiều loại ống thép, tấm thép, thanh thép, cuộn thép, dầm H và các sản phẩm khác. Kho hàng tuân theo các tiêu chuẩn ASTM, JIS, BS, EM và các tiêu chuẩn khác. Chúng tôi chuyên về sản xuất theo yêu cầu OEM cho tấm thép không gỉ 316, cắt laser và cắt đá pha lê. Nguyên liệu thô từ các nhà máy lớn nhất cùng với quy trình gia công tinh tế, có 20 năm kinh nghiệm trong ngành sản xuất thép.
×
Liên Hệ
tấm thép không gỉ 316
Lợi thế của Tấm Thép Không Gỉ 316:
Sáng tạo trong Tấm Thép Không Gỉ 316:
An toàn của Tấm Thép Không Gỉ 316:
Cách sử dụng Tấm Thép Không Gỉ 316:
Why choose Đông Nam Á tấm thép không gỉ 316?
Các điểm bán sản phẩm và lợi thế giao hàng
Chúng tôi có kinh nghiệm sản xuất đủ và chứng chỉ chất lượng để đảm bảo chất lượng
Lợi thế nghiên cứu và phát triển sản phẩm
Ưu điểm của công ty
Không Tìm Thấy Thứ Bạn Đang Tìm?
Yêu Cầu Báo Giá Ngay
Liên hệ với các chuyên gia tư vấn của chúng tôi để biết thêm sản phẩm có sẵn.