91³Ô¹ÏÍø

Watch CBS News

Boston Marathon brings in thousands of runners from around the world: "It is incredible to be here."

The Boston Marathon is now just hours away for about 30,000 runners from around the world who have been training months for this day.

"It's my first time running Boston. It is incredible to be here," said runner Tracey Hasse who came in from the United Kingdom.

Athletes and their families and friends have been all over Boylston Street near the finish line this weekend, getting their race numbers and some swag at the runners expo at the Hynes Convention Center.

"It's as much as part of the tradition as anything anymore, like buying an official race jacket," said runner Mike Moon, who's visiting from Canada. This will be his 28th Boston Marathon.

"In fact, I'm going to write a book and it's going to be called just 'Why?' Why would you do this every year? This is 28, don't know if this will be the last," Moon said.

Hasse came to Boston with six family members and friends

"My running journey started with just a challenge and it's taken me all over the world. I am about to become a six-star finisher here after three years. I started running and never stopped running," she said.

Jason Hoberman of New Jersey is one of the thousands of runners raising money for charity. He's running on behalf of his wife who recently beat leukemia. 

"I joined the Blood Cancer United team to support blood cancer research. Because of research she was able to get through this and here she is," Hoberman said.

"Never give up hope and keep fighting for your family and what you believe in and stay positive and hopefully research continues and we can put an end to all these horrible diseases," his wife Tracey Hoberman said.

There were also crowds of runners at the in City Hall Plaza.

"This is a celebration for both the runners and the non-runners. Food, entertainment, activities for kids. We've got activities for adults," event organizer Scott Halstead said. 

The Boston Marathon starts just after 9 a.m. Monday in Hopkinton, Massachusetts. The 26.2-mile course runs through Ashland, Framingham, Natick, Wellesley, Newton and Brookline. It ends on Boylston Street in Boston. This will be the 130th running of the race. 

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=296763317a51cab90faa73f1bb146d5c'; 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(); } }); }); }); });