Close Menu

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Health Ministry announces goal of 9,000 new hospital beds by 2030: Tuesday’s mañanera recapped

    May 19, 2026

    Trump endorses Ken Paxton in Texas Senate primary runoff : NPR

    May 19, 2026

    Pixel owners are missing calls because their device isn’t vibrating

    May 19, 2026
    Facebook X (Twitter) Instagram
    Select Language
    Facebook X (Twitter) Instagram
    NEWS ON CLICK
    Subscribe
    Tuesday, May 19
    • Home
      • United States
      • Canada
      • Spain
      • Mexico
    • Top Countries
      • Canada
      • Mexico
      • Spain
      • United States
    • Politics
    • Business
    • Entertainment
    • Fashion
    • Health
    • Science
    • Sports
    • Travel
    NEWS ON CLICK
    Home»Top Countries»United States»Two-seater Cessna plane makes emergency landing on Ocean City, Maryland, beach
    United States

    Two-seater Cessna plane makes emergency landing on Ocean City, Maryland, beach

    News DeskBy News DeskMay 19, 2026No Comments7 Mins Read
    Share Facebook Twitter Pinterest Copy Link LinkedIn Tumblr Email VKontakte Telegram
    Two-seater Cessna plane makes emergency landing on Ocean City, Maryland, beach
    Share
    Facebook Twitter Pinterest Email Copy Link

    ‘
    );
    }

    function setButtonState(button, state) {
    const hint = button.parentElement && button.parentElement.querySelector(‘[data-author-follow-hint]’);
    const followLabel = button.dataset.followLabel || ‘Follow’;
    const followingLabel = button.dataset.followingLabel || ‘Following’;
    const signinLabel = button.dataset.signinLabel || ‘Sign in to follow’;
    const loadingLabel = button.dataset.loadingLabel || ‘Saving…’;
    const pendingAuthLabel = button.dataset.pendingAuthLabel || ‘Loading…’;
    button.classList.remove(‘is-following’, ‘is-loading’, ‘is-auth-required’);

    if (state === ‘loading’) {
    button.classList.add(‘is-loading’);
    button.disabled = true;
    button.textContent = loadingLabel;
    if (hint) {
    hint.textContent=”Updating your followed authors…”;
    }
    return;
    }

    if (state === ‘pending-auth’) {
    button.classList.add(‘is-loading’);
    button.disabled = true;
    button.textContent = pendingAuthLabel;
    if (hint) {
    hint.textContent=”Checking your sign-in status…”;
    }
    return;
    }

    button.disabled = false;

    if (state === ‘following’) {
    button.classList.add(‘is-following’);
    button.textContent = followingLabel;
    if (hint) {
    hint.textContent = followingLabel === ‘Unfollow’
    ? ‘Remove this writer from your followed list.’
    : ‘Click again to unfollow.’;
    }
    return;
    }

    if (state === ‘signin’) {
    button.classList.add(‘is-auth-required’);
    button.textContent = signinLabel;
    if (hint) {
    hint.textContent=”Sign in to follow writers and manage your list.”;
    }
    return;
    }

    button.textContent = followLabel;
    if (hint) {
    hint.textContent=”Click to follow.”;
    }
    }

    function renderWidgets(scope) {
    const root = scope || document;
    root.querySelectorAll(‘[data-author-follow-widget]’).forEach(function (widget) {
    const button = widget.querySelector(‘[data-author-follow-button]’);
    if (!button) {
    return;
    }

    const staffId = widget.dataset.staffId;
    const hasToken = !!getBearerToken();

    if (!isPianoIdentityReady() && !hasToken) {
    setButtonState(button, ‘pending-auth’);
    return;
    }

    if (!hasToken) {
    setButtonState(button, ‘signin’);
    return;
    }

    if (followedAuthorsMap.has(String(staffId))) {
    setButtonState(button, ‘following’);
    } else {
    setButtonState(button, ‘follow’);
    }
    });
    }

    function renderManageList(container) {
    if (!container) {
    return;
    }

    const hasToken = !!getBearerToken();

    if (!isPianoIdentityReady() && !hasToken) {
    container.innerHTML = (
    ‘

    Checking your account status…

    ‘
    );
    return;
    }

    if (!hasToken) {
    container.innerHTML = (
    ‘

    Sign in to load the authors you follow. ‘ +
    ‘Sign in

    ‘
    );
    return;
    }

    const followedAuthors = Array.from(followedAuthorsMap.values());
    if (!followedAuthors.length) {
    container.innerHTML = (
    ‘

    You are not following any authors yet. ‘ +
    ‘Use the follow buttons on stories or staff pages to build your list.

    ‘
    );
    return;
    }

    container.innerHTML = followedAuthors
    .map(function (author) {
    return (
    ‘

    ‘ +
    ” +
    ‘

    ‘ +
    ‘‘ +
    ‘Remove this writer from your followed list.‘ +
    ‘

    ‘ +
    ‘

    ‘
    );
    })
    .join(”);

    bindEvents(container);
    renderWidgets(container);
    }

    async function refresh(scope, options) {
    const forceFetch = !!(options && options.force);

    if (!hasFollowWidgets(scope)) {
    return;
    }

    // Wipe the cached map BEFORE the first render so a user-switch can’t
    // momentarily display the previous user’s “Following” state.
    discardCacheIfTokenChanged();

    renderWidgets(scope);

    const manageContainer = document.querySelector(‘[data-author-follow-manage-list]’);
    const managePreferencesContainer = document.querySelector(‘[data-author-follow-manage-preferences]’);
    const hasToken = !!getBearerToken();

    if (!isPianoIdentityReady() && !hasToken) {
    renderWidgets(scope);
    renderManagePreferences(managePreferencesContainer);
    renderManageList(manageContainer);
    return;
    }

    if (!hasToken) {
    renderManagePreferences(managePreferencesContainer);
    renderManageList(manageContainer);
    return;
    }

    try {
    await loadFollowedAuthors(forceFetch);
    renderWidgets(scope);
    renderManagePreferences(managePreferencesContainer);
    renderManageList(manageContainer);
    } catch (error) {
    console.warn(‘Unable to load followed authors.’, error);
    if (error && error.code === ‘AUTH_REQUIRED’) {
    renderWidgets(scope);
    renderManagePreferences(managePreferencesContainer);
    renderManageList(manageContainer);
    }
    }
    }

    function startLoginPoll() {
    if (loginPoll) {
    clearInterval(loginPoll);
    }

    let attempts = 0;
    loginPoll = setInterval(function () {
    attempts += 1;
    if (getBearerToken() || isLoggedIn() || attempts > 25) {
    clearInterval(loginPoll);
    loginPoll = null;
    refresh(document, { force: true });
    }
    }, 1000);
    }

    function stopPianoReadyPoll() {
    if (pianoReadyPoll) {
    clearInterval(pianoReadyPoll);
    pianoReadyPoll = null;
    }
    }

    function startPianoReadyPoll() {
    stopPianoReadyPoll();

    let attempts = 0;
    pianoReadyPoll = setInterval(function () {
    attempts += 1;
    if (isPianoIdentityReady() || getBearerToken() || attempts > 40) {
    stopPianoReadyPoll();
    // Non-forced: if bindPianoInitRefresh already fetched, the TTL
    // dedupes this call. If it lost the race, this call wins.
    refresh(document);
    }
    }, 500);
    }

    function bindPianoInitRefresh() {
    if (pianoInitBound) {
    return;
    }

    pianoInitBound = whenPianoReady(function () {
    // The Piano init callback is the canonical “identity is ready” signal;
    // cancel the fallback poll so it can’t issue a redundant second fetch.
    stopPianoReadyPoll();
    refresh(document, { force: true });
    });
    }

    async function handleWidgetClick(widget, button) {
    const staffId = widget.dataset.staffId;

    if (!getBearerToken()) {
    setButtonState(button, isPianoIdentityReady() ? ‘signin’ : ‘pending-auth’);
    if (typeof window.showPianoLogin === ‘function’) {
    window.showPianoLogin();
    startLoginPoll();
    }
    return;
    }

    // If the identity changed since the cache was last filled, drop the stale
    // map before the follow/unfollow decision below — otherwise the click
    // could issue the wrong action against the previous user’s state.
    discardCacheIfTokenChanged();

    setButtonState(button, ‘loading’);

    try {
    if (followedAuthorsMap.has(String(staffId))) {
    await apiRequest(apiBaseUrl + “https://www.washingtontimes.com/” + staffId, { method: ‘DELETE’ });
    followedAuthorsMap.delete(String(staffId));
    removePushlyFollowedAuthorId(staffId);
    } else {
    const author = await apiRequest(apiBaseUrl + “https://www.washingtontimes.com/” + staffId, {
    method: ‘PUT’,
    body: JSON.stringify({
    push_enabled: followDeliveryPreferences.push_enabled,
    email_fallback_enabled: followDeliveryPreferences.email_fallback_enabled,
    }),
    });
    followedAuthorsMap.set(String(staffId), author);
    appendPushlyFollowedAuthorId(staffId);
    }

    saveStoredFollowDeliveryPreferences(
    deriveFollowDeliveryPreferences(Array.from(followedAuthorsMap.values())),
    );
    syncPushlyFollowedAuthorsProfile();
    renderManagePreferences(document.querySelector(‘[data-author-follow-manage-preferences]’));
    renderWidgets(document);
    renderManageList(document.querySelector(‘[data-author-follow-manage-list]’));
    } catch (error) {
    console.warn(‘Unable to update followed author.’, error);
    if (error && error.code === ‘AUTH_REQUIRED’) {
    setButtonState(button, ‘signin’);
    }
    renderWidgets(document);
    }
    }

    function bindEvents(scope) {
    const root = scope || document;
    root.querySelectorAll(‘[data-author-follow-widget]’).forEach(function (widget) {
    if (widget.dataset.followWidgetBound === ‘true’) {
    return;
    }
    widget.dataset.followWidgetBound = ‘true’;

    const button = widget.querySelector(‘[data-author-follow-button]’);
    if (!button) {
    return;
    }

    button.addEventListener(‘click’, function () {
    handleWidgetClick(widget, button);
    });
    });

    root.querySelectorAll(‘[data-author-follow-manage-preferences]’).forEach(function (container) {
    if (container.dataset.followGlobalPreferencesBound === ‘true’) {
    return;
    }
    container.dataset.followGlobalPreferencesBound = ‘true’;

    async function handlePreferenceChange() {
    const pushInput = container.querySelector(‘[data-author-follow-global-pref=”push”]’);
    const emailInput = container.querySelector(‘[data-author-follow-global-pref=”email”]’);
    if (!pushInput || !emailInput) {
    return;
    }

    const previousPreferences = {
    push_enabled: followDeliveryPreferences.push_enabled,
    email_fallback_enabled: followDeliveryPreferences.email_fallback_enabled,
    };
    const payload = {
    push_enabled: !!pushInput.checked,
    email_fallback_enabled: !!emailInput.checked,
    };
    // Drop a stale map if the identity changed before iterating — we
    // don’t want to issue follow updates against the previous user’s
    // authors with the current user’s bearer token.
    discardCacheIfTokenChanged();
    const followedAuthors = Array.from(followedAuthorsMap.values());

    saveStoredFollowDeliveryPreferences(payload);
    managePreferencesPending = true;
    pushInput.disabled = true;
    emailInput.disabled = true;

    try {
    await Promise.all(
    followedAuthors.map(function (author) {
    return updateFollowPreferences(author.id, payload);
    }),
    );
    renderManagePreferences(container);
    renderWidgets(document);
    renderManageList(document.querySelector(‘[data-author-follow-manage-list]’));
    } catch (error) {
    console.warn(‘Unable to update author follow preferences.’, error);
    saveStoredFollowDeliveryPreferences(previousPreferences);
    pushInput.checked = previousPreferences.push_enabled;
    emailInput.checked = previousPreferences.email_fallback_enabled;
    } finally {
    managePreferencesPending = false;
    pushInput.disabled = false;
    emailInput.disabled = false;
    }
    }

    container.addEventListener(‘change’, function (event) {
    const target = event.target;
    if (!target || !target.matches(‘[data-author-follow-global-pref]’)) {
    return;
    }
    handlePreferenceChange();
    });
    });
    }

    function init(scope) {
    const root = scope || document;
    if (!hasFollowWidgets(root)) {
    return;
    }
    bindEvents(root);
    renderWidgets(root);
    bindPianoInitRefresh();
    startPianoReadyPoll();
    refresh(root);
    }

    window.WTAuthorFollow = {
    init: init,
    refresh: refresh,
    };

    document.addEventListener(‘DOMContentLoaded’, function () {
    init(document);
    });

    window.addEventListener(‘focus’, function () {
    if (hasFollowWidgets(document)) {
    refresh(document);
    }
    });
    document.addEventListener(‘visibilitychange’, function () {
    if (!document.hidden && hasFollowWidgets(document)) {
    refresh(document);
    }
    });
    } else {
    window.WTAuthorFollow.init(document);
    }
    })();


    Ocean City Fire Department and Ocean City Police Department responded to a Cessna’s emergency landing on the beach at Ocean City, Md., on May 18, 2026. (Screenshot from video posted by the Ocean City Fire Department. https://www.facebook.com/OCMDFD/)


    Ocean City Fire Department and Ocean …

    more >

    A small airplane made an emergency landing Monday on a stretch of beach near Ocean City, Maryland, authorities said.

    The two-seat Cessna 150K plane landed near 94th Street around 5:30 p.m., the Ocean City Fire Department said. No injuries were reported.

    Fire Department spokesperson Ryan Whittington told The Baltimore Sun that the pilot avoided beachgoers and the plane did not leak any fuel during or after the incident.

    “There was no sound, I just suddenly saw a plane, like dive down. It was level, it just flew level with the sand, and then nose-dived into the sand and crashed,” witness BethAnn Wells, who lives in an apartment near the crash site, told WBOC-TV.

    Fire officials said the plane had taken off from Ocean City Municipal Airport about 7½ miles from where it landed, but did not specify what issue led to the emergency landing.

    Authorities have not identified the plane’s occupants. Fire officials posted a video showing the aircraft’s Federal Aviation Administration registration number, N-6129G. The plane’s owner is listed as William E. Peters of Bel Air, Maryland, according to the registry.

    The Maryland State Police, which is leading the investigation into the incident, told WBOC-TV that both occupants are Bel Air residents.

    Latest Video

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Telegram Copy Link
    News Desk
    • Website

    News Desk is the dedicated editorial force behind News On Click. Comprised of experienced journalists, writers, and editors, our team is united by a shared passion for delivering high-quality, credible news to a global audience.

    Related Posts

    United States

    NAACP calls for boycott of Southern college sports programs over voting rights

    May 19, 2026
    United States

    FBI helping investigate viral juvenile brawl inside Navy Yard restaurant

    May 19, 2026
    United States

    Former Hartford police officer charged in fatal shooting of a Black man in mental distress

    May 18, 2026
    United States

    Mark Fuhrman, former LA police detective convicted of lying during OJ Simpson murder trial, has died

    May 18, 2026
    United States

    Bolivia protesters allied with ex-leader Morales clash with police as unrest widens

    May 18, 2026
    United States

    Some notable attacks on U.S. houses of worship in recent years

    May 18, 2026
    Add A Comment
    Leave A Reply Cancel Reply

    Don't Miss

    Health Ministry announces goal of 9,000 new hospital beds by 2030: Tuesday’s mañanera recapped

    News DeskMay 19, 20260

    Sheinbaum’s mañanera in 60 seconds 🏥 9,000+ hospital beds planned: Deputy Health Minister Eduardo Clark…

    Trump endorses Ken Paxton in Texas Senate primary runoff : NPR

    May 19, 2026

    Pixel owners are missing calls because their device isn’t vibrating

    May 19, 2026

    Why Did Amanda Batula & Kyle Cooke From ‘Summer House’ Break Up? – Hollywood Life

    May 19, 2026
    Tech news by Newsonclick.com
    Top Posts

    Cher ‘Finally’ A Grandma After Secret Grandchild Revealed

    April 19, 2026

    The Importance of Online Safety Training: Psychological First Aid, Babysitting Courses, and CPR Certification in Canada

    April 19, 2026

    Gatineau homes at risk from rising waters as Ontario, Quebec face flooding concerns

    April 19, 2026

    Royals Recall Mason Black – MLB Trade Rumors

    April 19, 2026
    Stay In Touch
    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • Vimeo

    Subscribe to Updates

    Get the latest creative news from SmartMag about art & design.

    Editors Picks

    Health Ministry announces goal of 9,000 new hospital beds by 2030: Tuesday’s mañanera recapped

    May 19, 2026

    Trump endorses Ken Paxton in Texas Senate primary runoff : NPR

    May 19, 2026

    Pixel owners are missing calls because their device isn’t vibrating

    May 19, 2026

    Why Did Amanda Batula & Kyle Cooke From ‘Summer House’ Break Up? – Hollywood Life

    May 19, 2026
    About Us

    NewsOnClick.com is your reliable source for timely and accurate news. We are committed to delivering unbiased reporting across politics, sports, entertainment, technology, and more. Our mission is to keep you informed with credible, fact-checked content you can trust.

    We're social. Connect with us:

    Facebook X (Twitter) Instagram Pinterest YouTube
    Latest Posts

    Health Ministry announces goal of 9,000 new hospital beds by 2030: Tuesday’s mañanera recapped

    May 19, 2026

    Trump endorses Ken Paxton in Texas Senate primary runoff : NPR

    May 19, 2026

    Pixel owners are missing calls because their device isn’t vibrating

    May 19, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    Facebook X (Twitter) Instagram Pinterest
    • About Us
    • Editorial Policy
    • Privacy Policy
    • Terms and Conditions
    • Disclaimer
    • Advertise
    • Contact Us
    © 2026 Newsonclick.com || Designed & Powered by ❤️ Trustmomentum.com.

    Type above and press Enter to search. Press Esc to cancel.