{"product_id":"cable-protector-ramps-rubber","title":"Rubber Cable Protector Ramps - 2, 3 \u0026 5 Channels","description":"\u003cstyle\u003e.cable-merge-table{max-width:100%;overflow-x:auto;border:1px solid #d9dde3;border-radius:8px;margin:16px 0}.cable-merge-table table{width:100%;margin:0!important;border-collapse:separate;border-spacing:0;min-width:460px;table-layout:auto}.cable-merge-table th,.cable-merge-table td{padding:12px!important;text-align:left;word-break:normal!important;white-space:nowrap;border:0;border-bottom:1px solid #e3e6ea}.cable-merge-table th{background:#f4f6f8}.cable-merge-table tr:last-child td{border-bottom:0}\u003c\/style\u003e\u003ch2\u003eBlack Rubber\u003c\/h2\u003e\u003cp\u003eA recycled rubber base, high-visibility yellow PVC lid, and extra anti-slip surface pattern. Available in small and large 2-channel designs, plus 3- and 5-channel options. Pack quantities vary by style.\u003c\/p\u003e\n\u003cdiv class=\"cable-merge-table\"\u003e\u003ctable\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eStyle \/ Qty\u003c\/th\u003e\n\u003cth\u003eSKU\u003c\/th\u003e\n\u003cth\u003ePack Quantity\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e2-Channel Small \/ 2PCS\u003c\/td\u003e\n\u003ctd\u003eBS-ECP-5MX2\u003c\/td\u003e\n\u003ctd\u003e2PCS\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e2-Channel Small \/ 4PCS\u003c\/td\u003e\n\u003ctd\u003eBS-ECP-5MX4\u003c\/td\u003e\n\u003ctd\u003e4PCS\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e2-Channel Large \/ 1PC\u003c\/td\u003e\n\u003ctd\u003eBS-ECP-7NX1\u003c\/td\u003e\n\u003ctd\u003e1PC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e3-Channel \/ 1PC\u003c\/td\u003e\n\u003ctd\u003eBS-ECP-4MX1\u003c\/td\u003e\n\u003ctd\u003e1PC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e3-Channel \/ 2PCS\u003c\/td\u003e\n\u003ctd\u003eBS-ECP-4MX2\u003c\/td\u003e\n\u003ctd\u003e2PCS\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e5-Channel \/ 1PC\u003c\/td\u003e\n\u003ctd\u003eBS-ECP-2MX1\u003c\/td\u003e\n\u003ctd\u003e1PC\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e5-Channel \/ 2PCS\u003c\/td\u003e\n\u003ctd\u003eBS-ECP-2MX2\u003c\/td\u003e\n\u003ctd\u003e2PCS\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003c\/div\u003e\n\u003cp\u003eChannel dimensions and load limits vary by model. Confirm cable fit and the requirements of your installation before ordering. A pack quantity refers to the number of cable protector sections, not the number of channels.\u003c\/p\u003e\u003cstyle\u003e\n.video-wrap {\n  display: flex;\n  gap: 24px;\n  flex-wrap: wrap;\n  align-items: flex-start;\n  font-family: Arial, sans-serif;\n  max-width: 1200px;\n  margin: 0 auto;\n}\n\n\/* ===== 主播放器 ===== *\/\n.video-player {\n  flex: 2;\n  min-width: 320px;\n  background: #000;\n  border-radius: 16px;\n  overflow: hidden;\n  box-shadow: 0 10px 30px rgba(0,0,0,0.25);\n  position: relative;\n}\n\n#player {\n  width: 100%;\n  height: 520px;\n}\n\n\/* ===== 控制按钮 ===== *\/\n.controls {\n  position: absolute;\n  bottom: 12px;\n  left: 12px;\n  display: flex;\n  gap: 10px;\n  z-index: 10;\n}\n\n.controls button {\n  background: rgba(0,0,0,0.6);\n  color: #fff;\n  border: 1px solid rgba(255,255,255,0.2);\n  padding: 8px 12px;\n  border-radius: 8px;\n  cursor: pointer;\n  font-size: 14px;\n}\n\n\/* ===== 视频列表 ===== *\/\n.video-list {\n  flex: 1;\n  min-width: 280px;\n  background: #111;\n  border-radius: 16px;\n  padding: 12px;\n  display: flex;\n  flex-direction: row;\n  overflow-x: auto;\n  gap: 10px;\n}\n\n.video-item {\n  flex: 0 0 auto;\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n  padding: 10px;\n  cursor: pointer;\n  border-radius: 12px;\n  transition: 0.25s;\n  background: #1c1c1c;\n  border: 1px solid transparent;\n  min-width: 160px;\n}\n\n.video-item:hover {\n  transform: translateY(-2px);\n  background: #2a2a2a;\n}\n\n.video-item.active {\n  border: 1px solid #ff3b3b;\n  background: #222;\n}\n\n.video-item img {\n  width: 100%;\n  height: 90px;\n  object-fit: cover;\n  border-radius: 8px;\n}\n\n.video-title {\n  font-size: 14px;\n  color: #fff;\n  line-height: 1.4;\n  text-align: center;\n}\n\n\/* =========================\n   手机端优化\n========================= *\/\n@media (max-width: 768px) {\n  .video-wrap {\n    flex-direction: column;\n    gap: 10px;\n  }\n\n  .video-player {\n    width: 100vw;\n    margin-left: -16px;\n    border-radius: 0;\n  }\n\n  #player {\n    width: 100vw;\n    height: calc(100vw * 9 \/ 16);\n  }\n\n  .controls {\n    display: none;\n  }\n\n  .video-list {\n    flex-direction: row;\n    overflow-x: auto;\n    gap: 10px;\n    padding: 10px;\n    scrollbar-width: none;\n  }\n\n  .video-list::-webkit-scrollbar {\n    display: none;\n  }\n\n  .video-item {\n    min-width: 160px;\n  }\n\n  .video-item img {\n    height: 120px;\n  }\n\n  .video-title {\n    font-size: 13px;\n  }\n}\n\u003c\/style\u003e\u003cdiv class=\"product-videos\"\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n.video-wrap {\n  display: flex;\n  gap: 24px;\n  flex-wrap: wrap;\n  align-items: flex-start;\n  font-family: Arial, sans-serif;\n  max-width: 1200px;\n  margin: 0 auto;\n}\n\n\/* ===== 主播放器 ===== *\/\n.video-player {\n  flex: 2;\n  min-width: 320px;\n  background: #000;\n  border-radius: 16px;\n  overflow: hidden;\n  box-shadow: 0 10px 30px rgba(0,0,0,0.25);\n  position: relative;\n}\n\n#player {\n  width: 100%;\n  height: 520px;\n}\n\n\/* ===== 控制按钮 ===== *\/\n.controls {\n  position: absolute;\n  bottom: 12px;\n  left: 12px;\n  display: flex;\n  gap: 10px;\n  z-index: 10;\n}\n\n.controls button {\n  background: rgba(0,0,0,0.6);\n  color: #fff;\n  border: 1px solid rgba(255,255,255,0.2);\n  padding: 8px 12px;\n  border-radius: 8px;\n  cursor: pointer;\n  font-size: 14px;\n}\n\n\/* ===== 视频列表 ===== *\/\n.video-list {\n  flex: 1;\n  min-width: 280px;\n  background: #111;\n  border-radius: 16px;\n  padding: 12px;\n  display: flex;\n  flex-direction: row;\n  overflow-x: auto;\n  gap: 10px;\n}\n\n.video-item {\n  flex: 0 0 auto;\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n  padding: 10px;\n  cursor: pointer;\n  border-radius: 12px;\n  transition: 0.25s;\n  background: #1c1c1c;\n  border: 1px solid transparent;\n  min-width: 160px;\n}\n\n.video-item:hover {\n  transform: translateY(-2px);\n  background: #2a2a2a;\n}\n\n.video-item.active {\n  border: 1px solid #ff3b3b;\n  background: #222;\n}\n\n.video-item img {\n  width: 100%;\n  height: 90px;\n  object-fit: cover;\n  border-radius: 8px;\n}\n\n.video-title {\n  font-size: 14px;\n  color: #fff;\n  line-height: 1.4;\n  text-align: center;\n}\n\n\/* =========================\n   手机端优化\n========================= *\/\n@media (max-width: 768px) {\n  .video-wrap {\n    flex-direction: column;\n    gap: 10px;\n  }\n\n  .video-player {\n    width: 100vw;\n    margin-left: -16px;\n    border-radius: 0;\n  }\n\n  #player {\n    width: 100vw;\n    height: calc(100vw * 9 \/ 16);\n  }\n\n  .controls {\n    display: none;\n  }\n\n  .video-list {\n    flex-direction: row;\n    overflow-x: auto;\n    gap: 10px;\n    padding: 10px;\n    scrollbar-width: none;\n  }\n\n  .video-list::-webkit-scrollbar {\n    display: none;\n  }\n\n  .video-item {\n    min-width: 160px;\n  }\n\n  .video-item img {\n    height: 120px;\n  }\n\n  .video-title {\n    font-size: 13px;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"product-videos\"\u003e\n\u003cdiv class=\"video-wrap\"\u003e\n\u003c!-- 主播放器 --\u003e\n\u003cdiv class=\"video-player\"\u003e\n\u003cdiv id=\"player\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"controls\"\u003e\n\u003cbutton id=\"prevBtn\" type=\"button\"\u003e⟵ Prev\u003c\/button\u003e \u003cbutton id=\"nextBtn\" type=\"button\"\u003eNext ⟶\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 视频列表 --\u003e\n\u003cdiv class=\"video-list\"\u003e\n\u003c!-- 视频1 --\u003e\n\u003cdiv class=\"video-item active\"\u003e\n\u003cimg src=\"https:\/\/img.youtube.com\/vi\/wGmarMRnUik\/hqdefault.jpg\" alt=\"Crushing test video\"\u003e\n\u003cdiv class=\"video-title\"\u003eCrushing test video\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 视频2 --\u003e\n\u003cdiv class=\"video-item\"\u003e\n\u003cimg src=\"https:\/\/img.youtube.com\/vi\/LZdI9wCNJo8\/hqdefault.jpg\" alt=\"2-Channel Video\"\u003e\n\u003cdiv class=\"video-title\"\u003e2-Channel Video\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 视频3 --\u003e\n\u003cdiv class=\"video-item\"\u003e\n\u003cimg src=\"https:\/\/img.youtube.com\/vi\/OekFr3rJoTQ\/hqdefault.jpg\" alt=\"2-Big Channel Video\"\u003e\n\u003cdiv class=\"video-title\"\u003e2-Big Channel Video\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 视频4 --\u003e\n\u003cdiv class=\"video-item\"\u003e\n\u003cimg src=\"https:\/\/img.youtube.com\/vi\/Afxb2vcsgZw\/hqdefault.jpg\" alt=\"3-Channel Video\"\u003e\n\u003cdiv class=\"video-title\"\u003e3-Channel Video\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript src=\"https:\/\/www.youtube.com\/iframe_api\"\u003e\u003c\/script\u003e \u003cscript\u003e\nconst videos = [\n  \"wGmarMRnUik\",\n  \"LZdI9wCNJo8\",\n  \"OekFr3rJoTQ\",\n  \"Afxb2vcsgZw\"\n];\n\nlet player;\nlet currentIndex = 0;\nlet isReady = false;\n\n\n\/* ===== 初始化播放器 ===== *\/\nfunction onYouTubeIframeAPIReady() {\n\n  player = new YT.Player(\"player\", {\n\n    videoId: videos[0],\n\n    playerVars: {\n      autoplay: 0,\n      controls: 1,\n      rel: 0,\n      playsinline: 1\n    },\n\n    events: {\n\n      onReady: function () {\n        isReady = true;\n      },\n\n      onStateChange: onPlayerStateChange\n\n    }\n\n  });\n\n}\n\n\n\/* ===== 播放结束自动进入下一条 ===== *\/\nfunction onPlayerStateChange(event) {\n\n  if (event.data === YT.PlayerState.ENDED) {\n    nextVideo();\n  }\n\n}\n\n\n\/* ===== 播放指定视频 ===== *\/\nfunction playVideo(index) {\n\n  if (!player || !isReady) return;\n\n  if (isNaN(index)) return;\n\n  if (index \u003c 0 || index \u003e= videos.length) return;\n\n  currentIndex = index;\n\n  player.loadVideoById(videos[currentIndex]);\n\n  updateActive();\n\n}\n\n\n\/* ===== 下一条 ===== *\/\nfunction nextVideo() {\n\n  if (!player || !isReady) return;\n\n  currentIndex =\n    (currentIndex + 1) % videos.length;\n\n  player.loadVideoById(videos[currentIndex]);\n\n  updateActive();\n\n}\n\n\n\/* ===== 上一条 ===== *\/\nfunction prevVideo() {\n\n  if (!player || !isReady) return;\n\n  currentIndex =\n    (currentIndex - 1 + videos.length) % videos.length;\n\n  player.loadVideoById(videos[currentIndex]);\n\n  updateActive();\n\n}\n\n\n\/* ===== 更新当前视频高亮 ===== *\/\nfunction updateActive() {\n\n  document.querySelectorAll(\".video-item\").forEach(function (item, index) {\n\n    item.classList.toggle(\n      \"active\",\n      index === currentIndex\n    );\n\n  });\n\n}\n\n\n\/* ===== 绑定按钮和缩略图 ===== *\/\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n\n  const nextBtn = document.getElementById(\"nextBtn\");\n  const prevBtn = document.getElementById(\"prevBtn\");\n\n  if (nextBtn) {\n    nextBtn.addEventListener(\"click\", nextVideo);\n  }\n\n  if (prevBtn) {\n    prevBtn.addEventListener(\"click\", prevVideo);\n  }\n\n\n  document.querySelectorAll(\".video-item\").forEach(function (item) {\n\n    item.addEventListener(\"click\", function () {\n\n      const index = parseInt(\n        this.getAttribute(\"data-index\"),\n        10\n      );\n\n      playVideo(index);\n\n    });\n\n  });\n\n});\n\u003c\/script\u003e\n\u003c\/div\u003e\u003cscript\u003e(()=\u003e{\nif(window.oranliteRubberOptions)return;window.oranliteRubberOptions=true;\nconst selector='variant-picker[data-url=\"\/products\/cable-protector-ramps-rubber\"]';\nfunction sync(picker){\nconst groups=picker.querySelectorAll(\".option-selector\"),variants=picker.data?.product?.variants;\nif(groups.length!==2||!variants)return;\nconst channel=groups[0].querySelector(\"input:checked\")?.value;\ngroups.forEach((group,i)=\u003egroup.querySelectorAll('input[type=\"radio\"]').forEach(input=\u003e{\nconst available=variants.some(v=\u003ev.available\u0026\u0026v.options[i]===input.value\u0026\u0026(i===0||v.options[0]===channel));\nif(input.classList.contains(\"is-unavailable\")===available)input.classList.toggle(\"is-unavailable\",!available);\nconst label=Array.from(input.labels||[])[0];if(label){if(available\u0026\u0026label.hasAttribute(\"title\"))label.removeAttribute(\"title\");else if(!available\u0026\u0026label.title!==\"Unavailable\")label.title=\"Unavailable\";}\n}));\n}\nfunction init(){document.querySelectorAll(selector).forEach(picker=\u003e{\nsync(picker);if(picker.dataset.rubberObserved)return;picker.dataset.rubberObserved=\"true\";\nnew MutationObserver(()=\u003esync(picker)).observe(picker,{subtree:true,attributes:true,attributeFilter:[\"class\",\"title\"]});\n});}\ndocument.addEventListener(\"change\",event=\u003e{\nconst input=event.target;if(!(input instanceof HTMLInputElement))return;\nconst picker=input.closest(selector);if(!picker)return;\nconst groups=picker.querySelectorAll(\".option-selector\"),variants=picker.data?.product?.variants;\nif(groups.length!==2||!variants)return;\nif(groups[0].contains(input)){\nconst quantity=groups[1].querySelector(\"input:checked\")?.value;\nconst choices=variants.filter(v=\u003ev.options[0]===input.value);\nif(!choices.some(v=\u003ev.options[1]===quantity)){\nconst next=choices.find(v=\u003ev.available)||choices[0];\nconst target=next\u0026\u0026Array.from(groups[1].querySelectorAll(\"input\")).find(e=\u003ee.value===next.options[1]);if(target)target.checked=true;\n}}\nqueueMicrotask(()=\u003esync(picker));\n},true);\nif(document.readyState===\"loading\")document.addEventListener(\"DOMContentLoaded\",init,{once:true});else init();\ncustomElements.whenDefined(\"variant-picker\").then(init);\n})();\u003c\/script\u003e","brand":"OranLite","offers":[{"title":"2-Channel \/ 2PCS","offer_id":68120331551024,"sku":"BS-ECP-5MX2","price":46.58,"currency_code":"USD","in_stock":true},{"title":"2-Channel \/ 4PCS","offer_id":68120331583792,"sku":"BS-ECP-5MX4","price":78.44,"currency_code":"USD","in_stock":true},{"title":"2-Channel Large \/ 1PC","offer_id":68120331616560,"sku":"BS-ECP-7NX1","price":108.84,"currency_code":"USD","in_stock":true},{"title":"3-Channel \/ 1PC","offer_id":68120331649328,"sku":"BS-ECP-4MX1","price":59.17,"currency_code":"USD","in_stock":true},{"title":"3-Channel \/ 2PCS","offer_id":68120331682096,"sku":"BS-ECP-4MX2","price":103.66,"currency_code":"USD","in_stock":true},{"title":"5-Channel \/ 1PC","offer_id":68120331714864,"sku":"BS-ECP-2MX1","price":51.58,"currency_code":"USD","in_stock":true},{"title":"5-Channel \/ 2PCS","offer_id":68120331747632,"sku":"BS-ECP-2MX2","price":85.91,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0839\/3690\/3472\/files\/V2-01.jpg?v=1792036819","url":"https:\/\/www.oranlite.com\/es\/products\/cable-protector-ramps-rubber","provider":"OranLite","version":"1.0","type":"link"}