Connect with us

California

Tiny tracker following monarch butterflies during California migration

Published

on

Tiny tracker following monarch butterflies during California migration


SAN FRANCISCO (KGO) — When this monarch butterfly hits the sky it won’t be traveling alone. In fact, an energetic team of researchers will be following along with a revolutionary technology that’s already unlocking secrets that could help the entire species survive.

“I’ve described this technology as a spaceship compared to the wheel, like using a using a spaceship compared to the invention of the wheel. It’s teaching us so, so much more,” says Ray Moranz, Ph.D., a pollinator conservation specialist with the Xerces Society.

Moranz is part of a team that’s been placing tiny tracking devices on migrating monarchs. The collaboration is known as Project Monarch Science. It leverages solar powered radio tags that are so light they don’t affect the butterfly’s ability to fly. And they’re allowing researchers to track the Monarch’s movements in precise detail. With some 400 tags in place, the group already been able to get a nearly real time picture of monarch migrations east of the Rockies, with some populations experiencing dramatic twists and turns before making to wintering grounds in Mexico.

“They’re trying to go southward to Mexico. They can’t fight the winds. Instead, some of them were letting themselves be carried 50 miles north, 100 miles north, 200 miles the wrong way, which we are all extremely alarmed by and for good reason. Some of these monarchs, their migration was delayed by two or three weeks.

Advertisement

According to estimates, migrating monarch populations have dropped by roughly 80% or more across the country. And the situation with coastal species here in California is especially dire. Blake Barbaree is a senior scientist with Point Blue Conservation Science. He and his colleagues are tracking Northern California populations now clustered around Santa Cruz.

MORE: Monarch butterflies to be listed as a threatened species in US

“This year, there’s it’s one of the lowest, populations recorded in the winter. And the core zones have been in Santa Cruz County and up in Marin County. So we’ve undertaken an effort to understand how the monarchs are really using these different groves around Santa Cruz by tagging some in the state parks around town,” Barbaree explains.

He says being able to track individual monarchs could help identify microhabitats in the area that help them survive, ranging from backyard pollinator gardens to protected open space to forest groves.

“So we’re really getting a great insight to how reliant they are on these big trees, but also the surrounding area and people’s even backyards. And then along the way around the coast, how they’re transitioning among some of these groves. And we’re looking for some of the triggers for those movements. Right. Why are they doing this and what’s what’s driving them to do that? So those questions are still a little bit further out as we get to analyze some more some more of the data,” he believes.

Advertisement

And that data is getting even more precise. The tags, developed by Cellular Tracking Technologies, can be monitored from dedicated listening stations. But the company is also able to crowdsource signals detected by cellphone networks on phones with Bluetooth connectivity and location access activated. And they’ve also helped develop an app that allows volunteers, citizen scientists, and the general public to track and report Monarch locations themselves using their smartphones.

CEO Michael Lanzone says the initial response has been overwhelming.

MORE: New butterflies introduced in SF’s Presidio after species went extinct in 1940s

“We were super surprised to see 3,000 people download the monarch app. It’s like, you know, but people really love monarchs. There’s something that people just relate to,” says Lanzone who like many staffers at Cellular Tracking Technologies, has a background in wildlife ecology.

A number of groups are pushing to have the monarchs designated nationally as a threatened species. If that ultimately happens, researchers believe the tracking data could help put better protections in place.

Advertisement

“They’re highly vulnerable to, you know, some of the different things that that that we as humans do around using pesticides and also potentially cutting, you know, cutting down trees for various reasons. Sometimes they’re for safety and sometimes it’s, you know, for development. But so having an understanding of how we can do those things more sensibly and protect the places that they need the most,” says Point Blue’s Barbaree.

And it’s happening with the help of researchers, citizen scientists, and a technology weighing no more than a few grains of rice.

The smartphone app is called Project Monarch Science. You can download it for free and begin tracking.

Copyright © 2025 KGO-TV. All Rights Reserved.



Source link

Advertisement
Continue Reading
Click to comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

California

California Farmers Struggle to Weather the Agriculture Crisis | KQED

Published

on

California Farmers Struggle to Weather the Agriculture Crisis | KQED


Failed to save article

Please try again

Advertisement

A farmer works the field in Kern County on the outskirts of Mettler, California, on April 8, 2025. (Frederic J. Brown/Getty Images)

Guests:

Dan Sumner, professor of Agricultural and Resource Economics, UC Davis

Don Cameron, vice president and general manager, Terranova Ranch; president, California State Board of Food and Agriculture

Stuart Woolf, president and CEO, Woolf Farming & Processing

Advertisement

Alexis Maxwell, senior equity analyst, Bloomberg Intelligence





Source link

Continue Reading

California

See How Meghan Markle and Prince Harry Celebrated Easter in California With Their Children

Published

on

See How Meghan Markle and Prince Harry Celebrated Easter in California With Their Children


While the royal family gathered in Windsor this morning to attend Easter Sunday services, the holiday looked quite different in Montecito, California for Prince Harry, Meghan Markle, and their two children, Prince Archie and Princess Lilibet.

On Instagram, Meghan shared videos from their day, including feeding their chickens, gathering eggs, watching Archie and Lilibet race on an Easter egg hunt with their dogs following, Lilibet, in a pink dress, holding a large stuffed bunny toy while wearing bunny ears, and Archie working on decorating eggs. “Happy Easter!” she wrote in the caption . Watch the clips here:

In With Love, Meghan, Meghan spoke about collecting eggs from her chickens. “What’s really cool is with whatever’s going on in life, to be able to do something like this,” Meghan tells the camera about collecting eggs from her chickens. “It’s just fun. It’s fun for kids and for adults. But, if a morning starts like this [snaps], you think about your day differently.”

Harry and Meghan’s Netflix docuseries, Harry & Meghan, offered a sweet glimpse into their Easter traditions in California. In the sixth episode, cameras capture the Duke and Duchess of Sussex, along with Meghan’s mom Doria, as they set up an Easter egg hunt for Archie in April 2021.

Advertisement
Screenshot/Netflix

Meghan, pregnant with Lilibet, on Easter 2021.

prince harry meghan markle easter egg hunt netflix
Screenshot/Netflix

Harry places an egg underneath a Peter Rabbit character.

prince harry meghan markle easter egg hunt netflix
Screenshot/Netflix

The Sussexes setting up an Easter egg hunt for Archie in their backyard.

On ShopMy last year, Meghan shared her Easter essentials, which included children’s clothing picks from J.Crew, Boden, and Petite Plume, among other brands, and Easter hosting items such as children’s toys and home goods. Earlier this week, she was spotted shopping for Easter gifts at a local Montecito shop. “She was there for a while, talking to the staff and making selections,” a source told People at the time.

In addition, last month, her brand As Ever launched a limited-edition “Bloom Box” in collaboration with High Camp Supply, a San Francisco-based luxury florist. The box was meant to ship in time for Easter.

Advertisement

Headshot of Emily Burack

Emily Burack (she/her) is the Deputy Digital Editor for Town & Country, where she covers entertainment, celebrities, the royals, and a wide range of other topics. Before joining T&C, she was the deputy managing editor at Hey Alma, a Jewish culture site. Follow her @emburack on Instagram, Twitter, and other social media platforms.



Source link

Continue Reading

California

California Politics 360 Full Episode | $13M placed in bets on CA governor’s race

Published

on

California Politics 360 Full Episode | M placed in bets on CA governor’s race


Ashley Zavala sits down with Sacramento Assembly Member Maggy Krell about what more she says should be done.

Advertisement

California Politics 360 Full Episode | $13M placed in bets on CA governor’s race

Ashley Zavala sits down with Sacramento Assembly Member Maggy Krell about what more she says should be done.

Advertisement

California Politics 360 Full Episode | $13M placed in bets on CA governor’s race

Advertisement

Ashley Zavala sits down with Sacramento Assembly Member Maggy Krell about what more she says should be done.

Updated: 8:25 AM PDT Apr 5, 2026

Editorial Standards

Advertisement

At least $13 million has been placed in bets on the California governor’s race. In a state that doesn’t allow online sports betting, why are people allowed to bet on politics? The two most popular betting and prediction sites – Kalshi & Polymarket – are facing a flurry of lawsuits. Last week, Washington filed a lawsuit against Kalshi. Last month, Arizona’s attorney general filed criminal charges against the company. This week, California Sen. Adam Schiff joined three other senators in proposing legislation to block insiders from betting. Gov. Newsom also made some moves on the state level, banning state employees or his appointees and their family members from making bets on these sites using state information. Ashley Zavala sits down with Sacramento Assembly Member Maggy Krell about what more she says should be done. This year, California voters will decide who they want to be their next governor. Every week leading to the June primary, we will hear from one of the top 10 candidates running for the state’s highest position. This week, Ashley Zavala sat down with Republican Steve Hilton to get his thoughts on the major issues impacting Californians. New changes went into effect this week, impacting who is eligible for CalFresh. Ashley Zavala sits down with the Executive Director of the County Welfare Directors Association, Carlos Marquez III. We take a closer look at the responsibilities for California’s Insurance Commissioner ahead of the June primary.KCRA 3 Political Director Ashley Zavala reports in-depth coverage of top California politics and policy issues. She is also the host of “California Politics 360.” Get informed each Sunday at 8:30 a.m. on KCRA 3.

At least $13 million has been placed in bets on the California governor’s race. In a state that doesn’t allow online sports betting, why are people allowed to bet on politics?

The two most popular betting and prediction sites – Kalshi & Polymarket – are facing a flurry of lawsuits. Last week, Washington filed a lawsuit against Kalshi. Last month, Arizona’s attorney general filed criminal charges against the company.

Advertisement

This week, California Sen. Adam Schiff joined three other senators in proposing legislation to block insiders from betting. Gov. Newsom also made some moves on the state level, banning state employees or his appointees and their family members from making bets on these sites using state information.

Ashley Zavala sits down with Sacramento Assembly Member Maggy Krell about what more she says should be done.

This year, California voters will decide who they want to be their next governor. Every week leading to the June primary, we will hear from one of the top 10 candidates running for the state’s highest position. This week, Ashley Zavala sat down with Republican Steve Hilton to get his thoughts on the major issues impacting Californians.

New changes went into effect this week, impacting who is eligible for CalFresh. Ashley Zavala sits down with the Executive Director of the County Welfare Directors Association, Carlos Marquez III.

Advertisement

We take a closer look at the responsibilities for California’s Insurance Commissioner ahead of the June primary.


KCRA 3 Political Director Ashley Zavala reports in-depth coverage of top California politics and policy issues. She is also the host of “California Politics 360.” Get informed each Sunday at 8:30 a.m. on KCRA 3.

Advertisement

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

Advertisement

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

Advertisement

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

Advertisement

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.kcra.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.kcra.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

Advertisement

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

Advertisement

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

Advertisement

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

Advertisement

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

Advertisement

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.kcra.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.kcra.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

Advertisement

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

Advertisement

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

Loading more articles…

Advertisement



Source link

Continue Reading

Trending