91³Ô¹ÏÍø

Watch CBS News

San Francisco's Dyke March returns with new organizers after 6-year hiatus

The Dyke March was back in San Francisco and after a six-year hiatus, new organizers came together to put on the event.

"The energy is great," said Morgan Campbell, who attended the event.

Campbell and Vaanity Tuscegli are part of the queer community and were spending the day at Dolores Park for Pride.

They were just planning on observing the march, but after watching the beginning, they knew they had to join in.

"I think it's a big deal with where the state of the world is," said Tuscegli. "I think it's good to celebrate what we do have and where we are with it and claim it back while we have the chance."

Campbell says growing up queer, the term "Dyke" was used as an insult, but events like this change the narrative.

"That's about reclamation, too," Campbell explained. "We all got called that in school, now it's just so nice to see it used positively."

San Francisco Dyke March Interim Project Director M Rocket said the mission of the march is to bring the community together, to raise awareness, and create visibility.

"It's essential for Dyke Visibility to be out and proud and to show our force and our activism and our art and our culture," Rocket said.

This year, there was also a focus on disability access.

Rocket said she's grateful to be a part of bringing the march back for its 33rd time after a six-year hiatus.

But it took a lot of work, and they did it in a different way. The march organizers did not focus on grant funding, but instead on donations from over 300 individuals.

"We've had a ton of support from the city and from individuals who have all donated to our crowdfunding campaign to be able to get this work done this year and come back," said Rocket.

There was a rally before the march with entertainment and speeches from members of the queer community.

Tuscegli said at a time like this, when LGBTQ rights are being threatened nationally, spaces like this one are needed.

"I think any little bit of activism makes a difference," Tuscegli said. "It really does. I think we're bringing justice back to our community for the things we've had taken from ourselves."

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