91³Ô¹ÏÍø

Watch CBS News

Cotter scores shootout winner after Brown forces OT in Devils' 4-3 win over Maple Leafs

Paul Cotter scored the winner in the shootout, Connor Brown forced overtime with a tying goal with 2:21 left in the third period and the New Jersey Devils beat Toronto 4-3 on Wednesday night, sending the Maple Leafs to their fifth straight loss.

Timo Meier and and Arseny Gritsyuk also scored in regulation for the Devils, who have won three in a row and improved to 25-8-1 when scoring at least three goals. Jacob Markstrom made 24 saves.

William Nylander, Matias Maccelli and Matthew Knies had goals for the Maple Leafs, who haven't won since beating the Edmonton Oilers 5-2 on Feb. 3 — their last game before the Olympic break. Anthony Stolarz made 44 saves.

Cotter put a backhander past Stolarz to start the shootout for the Devils. After Nylander's wrister was stopped, Jesper Bratt also scored on a backhander to put New Jersey up 2-0 in the shootout. Auston Matthews' wrist shot was then stopped by Markstrom, giving the Devils the victory.

With the game tied at 2 in the third period, Knies batted in the rebound of John Tavares' shot past Markstrom to put Toronto ahead with 6:10 left.

Brown took a pass from Gritsyuk on a rush toward the net and roofed a quick shot in tight past Stolarz to tie it at 3 with 2:21 remaining.

The Devils outshot the Maple Leafs 47 to 27 in regulation.

New Jersey was without defenseman Brett Pesce, who suffered a lower-body injury against Florida on Tuesday night.

Up next

Maple Leafs: Play at New York Rangers on Thursday night.

Devils: Host the Rangers on Saturday.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });