91³Ô¹ÏÍø

Watch CBS News

San Francisco drivers, businesses prep for weekend closure of I-80 Bay Bridge approach

Traffic along Folsom Street near Fourth Street in San Francisco was already moving slowly on Friday, as ongoing construction continued to clog one of the main routes to the Bay Bridge.

That congestion is expected to worsen significantly this weekend, when a closure of eastbound Interstate 80 into San Francisco takes effect.

The shutdown, scheduled to begin late Friday night, will divert drivers onto city streets, including Folsom and nearby Bryant Street, corridors already strained by more than a year of street improvement work.

Drivers say they are bracing for delays.

"I'm going to stay at home," said Jeannine Hooks of Oakland. "My kid is coming over here, but I told him about what's going to happen with the traffic."

For some businesses, the closure brings uncertainty.

Mohammad Waqar, who recently opened Mashaallah Halal Pakistani Food at Fifth and Folsom streets with his wife, said business has been growing since relocating from the now-closed San Francisco Centre mall.

"We started getting very good and decent business here," Waqar said.

While he hopes increased visibility could draw in customers, he is unsure how gridlocked streets will affect operations. Much of his business relies on delivery orders, and the restaurant remains open seven days a week.

"I don't see if there will be a huge impact for us and a drop in business," he said.

Other business owners are more concerned.

A few blocks away on Bryant Street, near freeway on-ramps expected to be heavily impacted, Mike Dolan, general manager of BMW Motorcycles, said traffic could deter customers.

"It's a big deal," Dolan said. "People want to ride the bikes before they buy. If this is a parking lot out there, we're not going to be able to do test rides."

Nearby, the American Bookbinders Museum is also preparing for a potential drop in visitors. Saturday is typically its busiest day.

"It's very hard to get here, very hard to park, it's very hard to drive around," said Anita Engles of the museum. "When things do happen that impact traffic and parking, it will definitely impact the number of people who visit."

Some say the disruption could keep people away from San Francisco altogether.

"I wouldn't come to the city if I wasn't a resident," Dolan said. "If I knew the freeway was going to be closed, I would just avoid San Francisco."

City and transportation officials are urging travelers to avoid driving if possible and instead use public transit options, including BART, which may provide faster service during the closure, even for trips between San Francisco International Airport and the East Bay.

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(); } }); }); }); });