91³Ô¹ÏÍø

Watch CBS News

NJ Transit emergency drills held at MetLife Stadium before FIFA World Cup

The New Jersey Transit Police Department conducted its annual emergency response drill Saturday at MetLife Stadium. This year, the training exercise came in preparation for the FIFA World Cup, when massive crowds are expected to pack NJ Transit trains and buses.

NJ Transit worked with first responders from other police, fire and emergency departments to gauge their "responses to a simulated transportation incident."

The drill started at around 7 a.m. and lasted about three hours. There was no impact on regular train and bus service, NJ Transit says. 

  • .

Security "leaving no stone unturned," officials say

Thick, heavy smoke imitated the blinding conditions of an active fire billowed from an NJ Transit train as first responders poured into the Meadowlands Station, evacuating passengers and triaging them based on the severity of their injuries.

"The scenario today is a fire on board the train," said Christopher Trucillo, Chief of the NJ Transit Police Department.

Officials said with fans coming from around the globe, they want to ensure the safety of everyone using mass transit if the unthinkable happens.

"It's not so much getting the people off the train, it's really about how do we handle them when they get off the train?" Bergen County Executive Joe Tedesco said.

More than a dozen city, county and state agencies worked together, deploying drones, using dummies as cadavers, and taking on the roles of victims, triage and others to make the drill as realistic as possible.

"The world is very tense right now," Trucillo said. "From a security point of view, we wanna make sure we're leaving no stone unturned."

With such large crowds expected, the NJ Transit Police Department is also preparing in other ways.

"We are already identifying police officers that speak multiple languages," Trucillo said.

Preparations will continue until the first match kicks off in June.

NJ Transit World Cup tickets

Round-trip tickets for World Cup matches at MetLife Stadium will cost $150, and only 40,000 will be available per match, NJ Transit announced Friday. Shuttle bus tickets will cost $80. There will be no parking at the stadium due to security reasons.

NJ Transit President Kris Kolluri estimated the agency will spend $62 million to provide service for the eight World Cup matches at MetLife -- including the Final. 

"Commuters in New Jersey should not carry the cost years into the future for this wonderful event, but the fans going to the game should bear the burden of the cost," Kolluri said.

Agencies taking part in emergency drills

Personnel from numerous agencies participated in Saturday's emergency response drill at MetLife Stadium, including: 

  • New Jersey Transit Police Office of Emergency Management
  • NJ TRANSIT Rail Operations
  • NJ TRANSIT Agency Safety Management
  • Meadowlands Fire Department
  • NJ Sports & Exposition Authority EMS
  • NJ Sports & Exposition Authority
  • New Jersey State Police
  • Bergen County Office of Emergency Management
  • Bergen County Prosecutor's Office
  • Carlstadt Fire Department
  • Lyndhurst Fire Department
  • Moonachie Fire Department
  • Rutherford Fire Department
  • East Rutherford Fire Department
  • Ramsey Office of Emergency Management
  • Federal Railroad Administration (FRA)
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=50747257b890e014813016b79ece0fb2'; 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(); } }); }); }); });