. const schemaScript = document.createElement('script'); schemaScript.type = "application/ld+json"; schemaScript.text = JSON.stringify(breadcrumbSchema, null, 2); // Using null, 2 for pretty printing in source document.getElementsByTagName('head')[0].appendChild(schemaScript); })();

91桃色

Skip Content

Ciena Services

Achieve your business and network ambitions

We collaborate with you to ensure your network keeps pace with ever-evolving business needs, empowering you to deliver exceptional customer experiences. Our regional teams鈥攚ith the right people, processes, and tools鈥攅nsure that your network is built for success from the outset and maintained with integrity throughout its lifecycle.

value, as that changes for SEO purposes) "canonicalURL": "/products/ciena-services", "fullUrl": window.location.href, "videoDuration": kalturaPlayer_157994.config.sources.duration } } window.appEventData.push(eventPayloadVideoEnded); console.dir(eventPayloadVideoEnded); }); // Event listeners for mute/unmute actions kalturaPlayer_157994.addEventListener(kalturaPlayer_157994.Event.UI.USER_CLICKED_MUTE, (event) => { console.log('USER_CLICKED_MUTE'); // capture data when video is muted var eventPayloadVideoMuted = { "event": "videoMuted", "eventType": "custom", "attributes": { "videoName": kalturaPlayer_157994.config.sources.metadata.name, "analyticsPageName": "Component", // This should be a unique name of the page that will NOT ever change (note, don鈥檛 use the <title> value, as that changes for SEO purposes) "canonicalURL": "/products/ciena-services", "fullUrl": window.location.href, "videoDuration": kalturaPlayer_157994.config.sources.duration } } window.appEventData.push(eventPayloadVideoMuted); console.dir(eventPayloadVideoMuted); }); kalturaPlayer_157994.addEventListener(kalturaPlayer_157994.Event.UI.USER_CLICKED_UNMUTE, (event) => { console.log('USER_CLICKED_UNMUTE'); var eventPayloadVideoUnmuted = { "event": "videoUnmuted", "eventType": "custom", "attributes": { "videoName": kalturaPlayer_157994.config.sources.metadata.name, "analyticsPageName": "Component", // This should be a unique name of the page that will NOT ever change (note, don鈥檛 use the <title> value, as that changes for SEO purposes) "canonicalURL": "/products/ciena-services", "fullUrl": window.location.href, "videoDuration": kalturaPlayer_157994.config.sources.duration } } window.appEventData.push(eventPayloadVideoUnmuted); console.dir(eventPayloadVideoUnmuted); }); // Event listener for any errors kalturaPlayer_157994.addEventListener(kalturaPlayer_157994.Event.ERROR, (event) => { console.log('ERROR'); var eventPayloadVideoError = { "event": "videoError", "eventType": "custom", "attributes": { "videoName": kalturaPlayer_157994.config.sources.metadata.name, "analyticsPageName": "Component", // This should be a unique name of the page that will NOT ever change (note, don鈥檛 use the <title> value, as that changes for SEO purposes) "canonicalURL": "/products/ciena-services", "fullUrl": window.location.href, "videoDuration": kalturaPlayer_157994.config.sources.duration } } window.appEventData.push(eventPayloadVideoError); console.dir(eventPayloadVideoError); }); }); } catch (e) { console.error(e.message) } })(); </script> <style> .video-dialog .kaltura-player-container { width: 100%; height: 100%; position:absolute; top:0; left:0; left: 0; right: 0; bottom:0; } </style><script> $('.breakout.cn-conic-bg__midnight_6-red_3').addClass('cn-bg__midnight_6').removeClass('cn-conic-bg__midnight_6-red_3'); </script> <div class="cn-bg__white py-5 p-lg-5 "> <div class="text-tiles__wrapper cn-container py-lg-5"> <h2 class="text-tiles__title h4 h3-md h2-lg mb-1 mb-lg-0 pb-2 pb-lg-3 w-75 w-lg-50"></h2> <div class="cn-row"> <div class="col-12 col-md-4 d-flex flex-column mb-3"> <h3 class="cn-dashed h5 h3-lg mb-1 mb-lg-0 pb-1 pb-lg-3">Build</h3> <p class="pb-4 mb-3">Create your network right the first time<br> <a href="/products/ciena-services/build/consulting-service" class="cn-color__steelGray cn-hover-color__blue1 mt-2 d-inline-block">Consulting Service <span class="text-nowrap"><i class="fa-solid fa-chevron-right ps-1 small"></i></span></a> <br><a href="/products/ciena-services/build/implementation-service" class="cn-color__steelGray cn-hover-color__blue1">Implementation Service <span class="text-nowrap"><i class="fa-solid fa-chevron-right ps-1 small"></i></span></a> <br><a href="/products/ciena-services/build/systems-integration-service" class="cn-color__steelGray cn-hover-color__blue1">Systems Integration Service <span class="text-nowrap"><i class="fa-solid fa-chevron-right ps-1 small"></i></span></a> <a href="/products/ciena-services/build" title="" class="mt-4 cn-button cn-button__blue">Learn more</a></p> </div> <div class="col-12 col-md-4 d-flex flex-column mb-3"> <h3 class="cn-dashed h5 h3-lg mb-1 mb-lg-0 pb-1 pb-lg-3">Operate</h3> <p class="pb-4 mb-3">Achieve optimal network operation <br><br> <a href="/products/ciena-services/operate/managed-services" class="cn-color__steelGray cn-hover-color__blue1 mt-2 d-inline-block">Managed Services <span class="text-nowrap"><i class="fa-solid fa-chevron-right ps-1 small"></i></span></a> <br><a href="/products/ciena-services/operate/maintenance-services" class="cn-color__steelGray cn-hover-color__blue1">Maintenance Service <span class="text-nowrap"><i class="fa-solid fa-chevron-right ps-1 small"></i></span></a> <br> <a href="/products/ciena-services/operate" title="" class="mt-4 cn-button cn-button__blue">Learn more</a></p> </div> <div class="col-12 col-md-4 d-flex flex-column mb-3"> <h3 class="cn-dashed h5 h3-lg mb-1 mb-lg-0 pb-1 pb-lg-3">Improve</h3> <p class="pb-4 mb-3">Continually advance network performance and your team's knowledge and skills <br> <a href="/products/ciena-services/improve/learning-service" class="cn-color__steelGray cn-hover-color__blue1 mt-2 d-inline-block">Learning Service <span class="text-nowrap"><i class="fa-solid fa-chevron-right ps-1 small"></i></span></a> <br><a href="/products/ciena-services/improve/optimization-service" class="cn-color__steelGray cn-hover-color__blue1">Optimization Service <span class="text-nowrap"><i class="fa-solid fa-chevron-right ps-1 small"></i></span></a> <br> <a href="/products/ciena-services/improve" title="" class="mt-4 cn-button cn-button__blue">Learn more</a></p> </div> </div> </div> </div> <div class="breakout cn-bg__midnight_6"> <div class="cn-color__midnight cn-bg__midnight_6 bg-lg-transparent"> <div class="cn-container " id=""> <div class="cn-row gx-0 cn-bg__midnight_6 mx-n5 h-100"><div class="col-12 col-lg-6 cn-pt-lg-9 cn-pt-7 cn-pb-lg-7 cn-pb-5 px-5"> <h2>Solutions services</h2> <div class="col-12 pe-lg-5"><p>Meet your challenges with these tailored services</p></div> <div class="cn-mt-6 d-flex flex-column cn-flex-md-row"> <a href="/products/ciena-services/solutions-services" title="All solutions" class="cn-button cn-button__blue cn-mr-md-4 mb-4">All solutions</a></div></div> <div class="col-12 col-lg-6 position-relative"> <img alt="Woman looking at table with smile on face" class="object-fit-contain w-100 h-100" loading="lazy" src="/__data/assets/image/0031/158386/mosaic-services_solutions.jpg" sizes="(max-width:767px) 650px,(max-width:991px) 696px,696px" srcset="/__data/assets/image/0031/158386/varieties/half.jpg 650w,/__data/assets/image/0031/158386/mosaic-services_solutions.jpg 696w,/__data/assets/image/0031/158386/mosaic-services_solutions.jpg 696w"> </div> </div> </div> </div> </div> </main> <!--noindex--> <aside> <div class="cn-bg__red2"> <div class="footer-form__wrapper"> <div class="footer-form container cn-container"> <div class="footer-form__gfx d-none d-lg-block" aria-hidden="true"></div> <div class="cn-bg__red2 h-100"> <div class="d-flex ml-3 pt-5 pb-4 content flex-column flex-lg-row"> <div class="footer-form__text mb-5 d-flex flex-column"> <h3 class="footer-form__title h4 h3-lg">Stay connected</h3> <p class="footer-form__subtitle">Stay informed and get Ciena's network insights emailed straight to your inbox.</p> <div class="footer-form__social d-flex"> </div> </div> <div class="footer-form__form d-flex flex-column w-80"> <div class="embeded_form resource-details"> <form id="mktoForm_3290"></form> <script>MktoForms2.loadForm("//mynetwork.ciena.com", "847-FEI-694", 3290);</script> </div> </div> </div> </div> </div> </div> </div> </aside> <!--endnoindex--> <script> /* ReCaptcha Validation Variables */ //var globalSiteKey = "6LeTV4AUAAAAADa2HCgXHDqjoBptZG-a6UQduN3c"; var reCaptchaValidationEndpoint = "/site-resources/esi/n/c/recaptcha"; /* * @author Sanford Whiteman * @version v1.106 2020-04-04 * @copyright 漏 2020 Sanford Whiteman * @license Hippocratic 2.1: This license must appear with all reproductions of this software. * * Create a completely barebones, user-styles-only Marketo form * by removing inline STYLE attributes and disabling STYLE and LINK elements */ function destyleMktoForm(mktoForm, moreStyles){ var formEl = mktoForm.getFormElem()[0], arrayFrom = getSelection.call.bind([].slice); // remove element styles from <form> and children var styledEls = arrayFrom(formEl.querySelectorAll("[style]")).concat(formEl); styledEls.forEach(function(el) { el.removeAttribute("style"); }); // disable remote stylesheets and local <style>s /* var styleSheets = arrayFrom(document.styleSheets); styleSheets.forEach(function(ss) { if ( [mktoForms2BaseStyle,mktoForms2ThemeStyle].indexOf(ss.ownerNode) != -1 || formEl.contains(ss.ownerNode) ) { console.log("Marketo destyle: removing", ss); ss.disabled = true; } else { console.log("Marketo destyle: ignoring", ss); } }); */ if(!moreStyles) { formEl.setAttribute("data-styles-ready", "true"); } }; MktoForms2.whenRendered(function(form) { var parent = document.getElementsByClassName('embeded_form')[0]; var formData = form.vals(); var formID = formData.formid; console.log('formID: ' + formID); if(typeof(parent) != 'undefined' && parent != null && formID == 3290){ destyleMktoForm(form); } }); </script> <style type="text/css"> .embeded_form .mktoButton { background-color: #fff; color: #000; border: 2px solid #fff; display: inline-flex; justify-content: center; align-items: center; text-align: center; width: 15rem; padding: 0 2rem; border-radius: 2rem; font-size: 1rem; font-weight: 600; letter-spacing: -0.04rem; transition: all .3s ease; align-self: center; height: 3rem; margin-bottom: 1.5rem !important; } .embeded_form .mktoButton:not([disabled]):not(.disabled):hover { background-color: #c8c8c8; color: #000; outline:none !important; border:0; } .embeded_form .mktoButton:not([disabled]):not(.disabled):focus { background-color: rgba(0,0,0,0); color: #fff; outline-offset: 3px; border: 2px solid #fff; outline: 2px solid #fff; } .embeded_form .mktoButton:not([disabled]):not(.disabled):active { background-color: #c8c8c8; color: #000; border: 2px solid rgba(0,0,0,0); } .embeded_form input[type=text], .embeded_form input[type=email] { display: flex; background-color: #fff; align-items: center; justify-content: space-between; width: 100% !important; text-align: left; padding: 0.875rem 1rem; color: #787878; border: none; font-size: 0.875rem; line-height: 1.125rem; letter-spacing: -0.04rem; transition: all .3s ease; font-family: inherit; margin: 0; } .embeded_form .mktoForm { font-size: 0.875rem; line-height: 1.125rem; letter-spacing: -0.04rem; max-width: 43.25rem; width: 100%; /*gap: 0.625rem;*/ flex-direction: column !important; display: flex; color: #fff; text-transform:none; opacity:1; font-family:inherit; } .embeded_form .mktoForm .mktoFieldWrap { float:none; } .embeded_form .mktoForm .mktoLabel { color: #fff; text-transform:none; opacity:1; font-size: 0.875rem; line-height: 1.125rem; letter-spacing: -0.04rem; margin-bottom: 0; } .embeded_form .mktoForm .mktoRequiredField label.mktoLabel { font-weight:normal; float:none; margin-bottom:0.5rem; width:auto !important; } .embeded_form .mktoCaptchaDisclaimer { display:none; } .embeded_form .mktoAsterix { display: initial !important; float: right; padding: 0px 5px; } .embeded_form .mktoFieldDescriptor.mktoFormCol { width: 100%; } .embeded_form .mktoFormRow { display: flex; gap: 15px; align-items: flex-start; } @media screen and (max-width: 991px) { .embeded_form .mktoFormRow { flex-direction:column; } } .embeded_form .mktoFormRow.transparent { gap: 5px; margin: 10px 0; flex-direction:row; } .embeded_form .mktoFormRow.transparent .mktoFieldDescriptor.mktoFormCol { width: 20px; background-color:inherit; } .embeded_form .mktoFormRow.transparent .mktoFieldDescriptor.mktoFormCol + div { margin:6px 0 0; background-color:inherit; } .embeded_form .mktoFieldWrap a { text-decoration: underline; } .embeded_form .mktoForm .mktoError { position:relative; right:0 !important; bottom:-3px !important; display:block; pointer-events: none; } .embeded_form .mktoForm .mktoError .mktoErrorArrowWrap { display:none; } .embeded_form .mktoForm .mktoError .mktoErrorMsg { margin-top: 10px; margin-bottom: 0px; color: #fff; opacity: 85%; background-color: transparent; background-image: none; border: 0; border-radius: 0; box-shadow: none; font-size: inherit; line-height: inherit; max-width: 100%; padding: inherit; text-shadow: none; } .embeded_form .mktoForm .mktoError .mktoErrorMsg .mktoErrorDetail { display:inline; } .embeded_form input[type=checkbox] { width:15px; } .embeded_form .mktoError #ValidMsgEmail, .embeded_form .mktoError #ValidMsgCountry { margin-top:3px; } .embeded_form .mktoForm .mktoFormRow .mktoRequiredField .mktoAsterix { color: #fff; } @media only screen and (max-width: 480px) { .embeded_form .mktoForm .mktoFormCol .mktoLabel { width: auto; } } @media only screen and (max-width: 480px) { .embeded_form .mktoForm .mktoFormRow .mktoRequiredField .mktoAsterix { float:right; padding:0 5px; } } </style> <footer class="footer cn-bg__red3"> <div class="footer__container cn-container justify-content-between cn-py-4"> <h3 class="h1 m-0 mt-3"> <a href="/" title="Ciena"> <img src="/__data/assets/git_bridge/0015/101616/build/images/logo_dark.svg?h=536960e" alt="Ciena" class="footer__logo"> </a> </h3> <span class="footer__text cn-dashed"><p>Ciena is the global leader in high-speed connectivity. </p> <p>We build adaptive networks to support exponential growth in bandwidth demand鈥攅mpowering our customers, partners, and communities to thrive in the AI era. With unparalleled expertise and innovation, our networking systems, components, automation software, and services revolutionize data transmission and network management.</p></span> <div class="d-flex footer__columns cn-dashed"> <div class="footer__links d-flex w-100 flex-column"> <div class="footer__links-title d-flex"> <a href="/insights" class="footer__link footer__link-heading" title="Footer nav: 91桃色" aria-label="Footer nav: 91桃色">91桃色</a> <button class="footer__column-toggle" title="Toggle"><i class="fa-solid fa-lg fa-plus"></i></button> </div> <div class="footer__links-collapse w-100 flex-column"> <a href="/insights" class="footer__link" title="Footer sub-nav: Featured insights" aria-label="Footer sub-nav: Featured insights" style="display: inline-block;">Featured insights</a><a href="/insights/list?type=articles" target="_blank" class="footer__link" title="Footer sub-nav: Blog" aria-label="Footer sub-nav: Blog" style="display: inline-block;">Blog</a><a href="/insights/case-studies" class="footer__link" title="Footer sub-nav: Case studies" aria-label="Footer sub-nav: Case studies" style="display: inline-block;">Case studies</a><a href="/insights/videos" class="footer__link" title="Footer sub-nav: Videos" aria-label="Footer sub-nav: Videos" style="display: inline-block;">Videos</a><a href="/about/newsroom/podcasts" class="footer__link" title="Footer sub-nav: Podcasts" aria-label="Footer sub-nav: Podcasts" style="display: inline-block;">Podcasts</a> </div></div><div class="footer__links d-flex w-100 flex-column"> <div class="footer__links-title d-flex"> <a href="/about" class="footer__link footer__link-heading" title="Footer nav: 91桃色" aria-label="Footer nav: 91桃色">91桃色</a> <button class="footer__column-toggle" title="Toggle"><i class="fa-solid fa-lg fa-plus"></i></button> </div> <div class="footer__links-collapse w-100 flex-column"> <a href="/about" class="footer__link" title="Footer sub-nav: About Ciena" aria-label="Footer sub-nav: About Ciena" style="display: inline-block;">About Ciena</a><a href="/careers" target="_blank" class="footer__link" title="Footer sub-nav: Careers" aria-label="Footer sub-nav: Careers" style="display: inline-block;">Careers</a><a href="/about/newsroom" class="footer__link" title="Footer sub-nav: Newsroom" aria-label="Footer sub-nav: Newsroom" style="display: inline-block;">Newsroom</a><a href="/about/cienalife" class="footer__link" title="Footer sub-nav: CienaLife" aria-label="Footer sub-nav: CienaLife" style="display: inline-block;">CienaLife</a><a href="/partners" class="footer__link" title="Footer sub-nav: Partners" aria-label="Footer sub-nav: Partners" style="display: inline-block;">Partners</a> </div></div><div class="footer__links d-flex w-100 flex-column"> <div class="footer__links-title d-flex"> <a href="/support" class="footer__link footer__link-heading" title="Footer nav: Support" aria-label="Footer nav: Support">Support</a> <button class="footer__column-toggle" title="Toggle"><i class="fa-solid fa-lg fa-plus"></i></button> </div> <div class="footer__links-collapse w-100 flex-column"> <a href="/contact-us/sales" class="footer__link" title="Footer sub-nav: Contact sales" aria-label="Footer sub-nav: Contact sales" style="display: inline-block;">Contact sales</a><a href="/support" class="footer__link" title="Footer sub-nav: Contact support" aria-label="Footer sub-nav: Contact support" style="display: inline-block;">Contact support</a><a href="/events" class="footer__link" title="Footer sub-nav: Events" aria-label="Footer sub-nav: Events" style="display: inline-block;">Events</a><a href="/ebc" class="footer__link" title="Footer sub-nav: Executive briefing center" aria-label="Footer sub-nav: Executive briefing center" style="display: inline-block;">Executive briefing center</a> </div></div><div class="footer__links d-flex w-100 flex-column"> <div class="footer__links-title d-flex"> <a href="#" target="_blank" class="footer__link footer__link-heading" title="Footer nav: Quicklinks" aria-label="Footer nav: Quicklinks">Quicklinks</a> <button class="footer__column-toggle" title="Toggle"><i class="fa-solid fa-lg fa-plus"></i></button> </div> <div class="footer__links-collapse w-100 flex-column"> <a href="/contact-us/worldwide" class="footer__link" title="Footer sub-nav: Ciena worldwide" aria-label="Footer sub-nav: Ciena worldwide" style="display: inline-block;">Ciena worldwide</a> </div></div> </div> <p class="copyright__text">漏 2025 91桃色. All rights reserved.</p> <div class="copyright__links d-flex"> <a id="copyright-link-privacy-policy" href="/about/corporate-governance/privacy-policy" title="Footer utility nav: Privacy Policy" aria-label="Footer utility nav: Privacy Policy" class="copyright__link">Privacy Policy</a><a id="copyright-link-legal-notices" href="/about/corporate-governance/legal-notices" title="Footer utility nav: Legal notices" aria-label="Footer utility nav: Legal notices" class="copyright__link">Legal notices</a><a id="copyright-link-cookies" href="#" target="_blank" title="Footer utility nav: Cookies" aria-label="Footer utility nav: Cookies" class="copyright__link"> Cookies</a><a id="copyright-link-accessibility-statement" href="/general/accessibility-statement" title="Footer utility nav: Accessibility" aria-label="Footer utility nav: Accessibility" class="copyright__link">Accessibility</a> </div> </div> <a href="#" aria-label="Back to top" class="back-to-top-btn cn-bg__steelGray cn-color__white position-fixed cn-hover-color__white opacity-75 cn-subhead-4"> <i class="fa-light fa-arrow-up-to-line d-flex justify-content-center align-items-center" aria-hidden="true"></i> </a> </footer> <!--noindex--> <!--<script src="/__data/assets/js_file_folder/0025/59515/footer.min.js?v=0.28.1"></script>--> <script src="/__data/assets/git_bridge/0018/140094/build/js/vendor.js?h=9bc452d"></script> <script src="/__data/assets/git_bridge/0018/140094/build/js/global.js?h=9bc452d"></script> <script src="/__data/assets/js_file/0026/136583/Re-design-formstracking.js?v=0.6.6"></script> <script> // Establish the data layer window.appEventData = window.appEventData || []; // Function to send Adobe EDDL event function sendEDDLEvent(eventName, eventAttributes) { window.appEventData.push({ event: eventName, eventType: 'custom', attributes: eventAttributes }); } // Function to retrieve a query parameter value from the URL function getQueryParam(param) { param = param.replace(/[\[\]]/g, '\\$&'); // Escape special characters for regex var regex = new RegExp('[?&]' + param + '(=([^&#]*)|&|#|$)'), results = regex.exec(window.location.href); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); } var pageViewEventAttributes = { "analyticsPageName": "Ciena Services", "canonicalURL": "/products/ciena-services", "fullUrl": window.location.href, "pageTitleTag": document.title, "seoOptimization": "", "seoContentType": document.querySelector('meta[name="seoContentType"]').content, "pageType": getPageType(), "pageCategory": "", "author": "91桃色", "publishedDate": document.querySelector('meta[name="byTypeDate"]').content, "primaryTopic": "", "topics": '', "queryParameter": window.location.search || "", "utmSource": getQueryParam("utm_source") || getQueryParam("source") || "", "utmMedium": getQueryParam("utm_medium") || getQueryParam("medium") || "", "utmContent": getQueryParam("utm_content") || getQueryParam("content") || "", "utmCampaign": getQueryParam("utm_campaign") || getQueryParam("campaign") || "", "utmChannel": getQueryParam("utm_channel") || getQueryParam("channel") || "", "utmTerm": getQueryParam("utm_term") || getQueryParam("term") || "", "adType": getQueryParam("adtype") || "" }; sendEDDLEvent("pageViewed", pageViewEventAttributes); function getPageType() { var pageUrl = window.location.href; if (pageUrl.includes("/solutions/")) { return "Solution"; } else if (pageUrl.includes("/products/")) { return "Product"; } else if (pageUrl.includes("/press-releases/")) { return "Press Release"; } else if (pageUrl.includes("/podcasts/")) { return "Podcast"; } else if (pageUrl.includes("/contact-us/")) { return "Contact"; } else { return "Content"; // Default value if the page type is not matched } } // EDDL Scroll Depth Event const scrollThresholds = [10, 20, 30, 40, 50, 60, 70, 80, 90, 99]; let thresholdsReached = {}; function trackScrollDepthEDDL() { const scrollHeight = document.documentElement.scrollHeight - window.innerHeight; const scrolled = (window.pageYOffset / scrollHeight) * 100; for (const threshold of scrollThresholds) { if (!thresholdsReached[threshold] && scrolled >= threshold) { // Use scroll100 as the event name when the 99 threshold is reached const scrollEvent = threshold === 99 ? 'scroll100' : `scroll${threshold}`; const scrollEventAttributes = { "analyticsPageName": "Ciena Services", "canonicalURL": "/products/ciena-services", "fullUrl": window.location.href, }; sendEDDLEvent(scrollEvent, scrollEventAttributes); //console.log("thresholdsReached: " + (threshold === 99 ? '100' : threshold)); thresholdsReached[threshold] = true; if (threshold === 99) { window.removeEventListener('scroll', trackScrollDepthEDDL); } } } } window.addEventListener('scroll', trackScrollDepthEDDL); // EDDL for CTA Click Tracking // Function to get CTA type function getCtaType(element) { const navHeader = document.querySelector('header.cn-header'); const navMobile = document.querySelector('div.mm.mm--js'); if ((navHeader && navHeader.contains(element)) || (navMobile && navMobile.contains(element))) { return 'Nav Link'; } else if (element.tagName === 'A' && element.hasAttribute('download')) { return 'Download'; } else if (element.tagName === 'A' && element.classList.contains('quick-link-item')) { return 'Quick Link'; } else if (element.tagName === 'A' && element.querySelector('img') !== null) { return 'Image'; } else if (element.tagName === 'A' && element.querySelector('i') !== null) { return 'Icon Text Link'; } else if (element.classList.contains('nav-link') && (element.getAttribute('data-bs-toggle') === 'tab' || element.getAttribute('data-bs-toggle') === 'collapse')) { return 'Accordion Tab'; } else if (element.classList.contains('tab') && element.classList.contains('js-tab') && element.hasAttribute('data-tab')) { return 'Tabbed Navigation'; } else if (element.tagName === 'A' && element.classList.contains('cn-button')) { return 'Button'; } else if (element.tagName === 'A') { return 'Link'; } else { return 'Unknown'; } } // Function to get CTA text content function getCtaText(element) { // For image links, try to get alt text, otherwise use title if (element.querySelector('img') !== null) { const image = element.querySelector('img'); return image.alt !== '' ? image.alt : (image.title !== '' ? image.title : ' '); } else { return element.textContent.trim().replace(/\s+/g, ' '); } } // Function to get CTA location (percentage from top of viewport) function getCtaLocation(element) { const elementTop = element.getBoundingClientRect().top + window.scrollY; const documentHeight = document.documentElement.scrollHeight; const percentage = (elementTop / documentHeight) * 100; return percentage.toFixed(); } // Add click event listeners to all CTA elements document.querySelectorAll('a, button, li.js-tab').forEach(element => { element.addEventListener('click', function(event) { const ctaType = getCtaType(this); const ctaText = getCtaText(this); const ctaLocation = getCtaLocation(this); const ctaURL = this.href; // Send EDDL event sendEDDLEvent('ctaClicked', { 'ctaType': ctaType, 'ctaText': ctaText, 'ctaLocation': ctaLocation + '%', 'ctaURL': ctaURL, 'analyticsPageName': "Ciena Services", 'canonicalURL': "/products/ciena-services", 'fullUrl': window.location.href }); // Log data layer contents to the console //console.log("Data Layer: ", JSON.stringify(window.appEventData, null, 2)); }); }); // EDDL for social media shares and profile clicks // Add event listeners to social media icons const socialMediaIcons = document.querySelectorAll('.jssocials-share-link, .podcast-share a, .article-author__social a, .footer-form__social-icons'); socialMediaIcons.forEach((icon) => { icon.addEventListener('click', (event) => { const smpProfile = getSocialMediaProfile(event.currentTarget); let smpLocation = ''; const parentElement = icon.parentElement; if (icon.classList.contains('jssocials-share-link') || parentElement.classList.contains('article-author__social')) { smpLocation = 'Article share link'; } else if (parentElement.classList.contains('podcast-share')) { smpLocation = 'Podcast share link'; } else if (parentElement.classList.contains('footer-form__social')) { smpLocation = 'Footer area'; } const eventAttributes = { smpProfile, smpLocation, analyticsPageName: "Ciena Services", canonicalURL: "/products/ciena-services", fullUrl: window.location.href }; sendEDDLEvent('smpClicked', eventAttributes); //console.log("Data Layer: ", JSON.stringify(window.appEventData, null, 2)); }); }); function getSocialMediaProfile(target) { const childElement = target.querySelector('i, span'); if (childElement) { if (childElement.classList.contains('fa-twitter')) { return 'Twitter'; } else if (childElement.classList.contains('fa-facebook')) { return 'Facebook'; } else if (childElement.classList.contains('fa-linkedin-square') || childElement.classList.contains('fa-linkedin')) { return 'LinkedIn'; } else if (childElement.classList.contains('fa-youtube')) { return 'YouTube'; } else if (childElement.classList.contains('fa-spotify')) { return 'Spotify'; } else if (childElement.classList.contains('fa-envelope')) { return 'Mail'; } else if (childElement.classList.contains('fa-instagram')) { return 'Instagram'; } } return ''; } // Function to check if a Ceros iframe or script exists function isCerosPresent() { const iframes = document.querySelectorAll('iframe'); for (const iframe of iframes) { if (iframe.src.startsWith('https://view.ceros.com')) { return true; } } const scripts = document.querySelectorAll('script'); for (const script of scripts) { if (script.src === 'https://view.ceros.com/scroll-proxy.min.js') { return true; } } return false; } // Only execute the event listener if a Ceros iframe or script is detected document.addEventListener("DOMContentLoaded", (event) => { if (isCerosPresent()) { window.addEventListener('message', function(event) { if (event.origin !== 'https://view.ceros.com') return; try { var clickData = JSON.parse(event.data); } catch (error) { console.error("Error parsing message data:", error); return; } if (clickData.event === 'ceros-embedded-viewport:global-function') { const functionCall = clickData.globalFunctions[0]; if (functionCall && functionCall.args && functionCall.args.length > 1) { const eventDetails = functionCall.args[1].detail; // Determine event name for EDDL (you can customize this logic) if (eventDetails.eventType === "component-click") { sendEDDLEvent('CerosClick', eventDetails); //console.log("Data Layer: ", JSON.stringify(window.appEventData, null, 2)); } else if (eventDetails.eventType === "experience-open") { sendEDDLEvent('CerosExperienceOpened', eventDetails); //console.log("Data Layer: ", JSON.stringify(window.appEventData, null, 2)); } else if (eventDetails.eventType === "link-click") { sendEDDLEvent('CerosLinkClick', eventDetails); //console.log("Data Layer: ", JSON.stringify(window.appEventData, null, 2)); } else if (eventDetails.eventType === "form-submit") { sendEDDLEvent('CerosFormSubmit', eventDetails); //console.log("Data Layer: ", JSON.stringify(window.appEventData, null, 2)); } } } }); } }); </script> <!--endnoindex--> </body> </html>