91³Ô¹ÏÍø

Watch CBS News

Jet skiers rescue 6-year-old boy swept hundreds of yards into Lake Michigan on inflatable raft

Two jet skiers are being celebrated for rescuing a 6-year-old boy after strong winds pushed his inflatable raft hundreds of yards offshore in northwest Indiana on Friday.

The good Samaritans, a father and son, took their jet skis out on Lake Michigan for the first time this spring, when an inflatable far offshore along Porter Beach caught their eye.

"We were out there on the jet skis, we saw a blow-up toy," Tom Peeler said. "Straight off the beach here, probably 300 to 400 yards off. He had been sucked out that far that fast."

"I was probably a football field or two away when I seen the raft, and like I said, I just raced over," said his son, Tommy.

Once father and son found the inflatable, they saw a little boy about to go under.

"My son went after him," Tom said.

"Probably about 80 feet from the raft, I seen just a head and a little hand sticking up, and I raced over there," Tommy said.

The 6-year-old's family said the boy was supervised while standing in knee-deep water when he unexpectedly jumped onto the inflatable. The strong offshore wind carried the raft hundreds of yards. In a panic, the child jumped into Lake Michigan.

Dave Benjamin, co-founder of the Great Lakes Surf Rescue Project, said offshore winds can turn dangerous in an instant.

"With a drowning, you know, you're seconds to minutes for a successful rescue if you have a young child that is not a swimmer. So he got very, very lucky," he said. "I've seen teenagers swimming after their football into water over their head, and then needing rescue. Same thing with parents going out after their kids' toys, and there's been fatalities."

The Peelers rescued the 6-year-old and two other adults who struggled as they tried swimming to the stranded inflatable.

"For some reason we were there to save him. I don't know," Tom said.

"I'm just glad the boy's alright. He seemed liked a really cool kid, and just be careful out there," Tommy said.

Another reminder, if strong winds come through and blow your inflatable, simply let it go. If you are already on it when it blows out, stay on it and signal for help.

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