More actions
No edit summary |
No edit summary |
||
| Line 9: | Line 9: | ||
$(function() { | $(function() { | ||
function | // Handle redirects with tab switching | ||
var $redirect = $('span.mw-redirectedfrom a'); | |||
if ($redirect.length) { | |||
waitAndSwitchTab($redirect.text().trim()); | |||
} | |||
// Handle hash-based tab switching | |||
if (window.location.hash && window.location.hash.indexOf('tabber-tabpanel') !== -1) { | |||
waitAndSwitchTab(null, window.location.hash.substring(1)); | |||
} | |||
// Intercept search result clicks | |||
document.addEventListener('click', function(e) { | |||
var link = e.target.closest('a'); | |||
if (!link) return; | |||
var href = link.getAttribute('href'); | |||
if (!href) return; | |||
// Check if this is a redirect page link | |||
var title = link.textContent.trim(); | |||
var pageTitle = href.replace(/^\//, '').replace(/_/g, ' '); | |||
// If the link text doesn't match where it's going, it's probably a resolved redirect | |||
if (title !== pageTitle && link.closest('.citizen-typeahead')) { | |||
e.preventDefault(); | |||
// Navigate using the redirect so our observer can catch it | |||
window.location.href = '/index.php?title=' + encodeURIComponent(title) + '&redirect=yes'; | |||
} | |||
}, true); | |||
function waitAndSwitchTab(from, panelId) { | |||
var observer = new MutationObserver(function(mutations, obs) { | var observer = new MutationObserver(function(mutations, obs) { | ||
var panels = document.querySelectorAll('[role="tabpanel"]'); | var panels = document.querySelectorAll('[role="tabpanel"]'); | ||
if (panels.length > 0) { | if (panels.length > 0) { | ||
panels.forEach(function(panel) { | if (panelId) { | ||
var tab = document.querySelector('[aria-controls="' + panelId + '"]'); | |||
if (tab) tab.click(); | |||
} else if (from) { | |||
panels.forEach(function(panel) { | |||
if (panel.textContent.indexOf(from) !== -1) { | |||
var id = panel.getAttribute('id'); | |||
var tab = document.querySelector('[aria-controls="' + id + '"]'); | |||
if (tab) tab.click(); | |||
} | } | ||
} | }); | ||
} | } | ||
obs.disconnect(); | obs.disconnect(); | ||
} | } | ||
}); | }); | ||
observer.observe(document.body, { childList: true, subtree: true }); | observer.observe(document.body, { childList: true, subtree: true }); | ||
} | } | ||
}); | }); | ||
Revision as of 21:39, 3 April 2026
/* Any JavaScript here will be loaded for all users on every page load. */
$(function() {
$('[accesskey="t"]').removeAttr('accesskey');
$('[accesskey="n"]').removeAttr('accesskey');
$('#pt-mytalk').remove();
$('#ca-talk').remove();
$('#ca-addsection').remove();
});
$(function() {
// Handle redirects with tab switching
var $redirect = $('span.mw-redirectedfrom a');
if ($redirect.length) {
waitAndSwitchTab($redirect.text().trim());
}
// Handle hash-based tab switching
if (window.location.hash && window.location.hash.indexOf('tabber-tabpanel') !== -1) {
waitAndSwitchTab(null, window.location.hash.substring(1));
}
// Intercept search result clicks
document.addEventListener('click', function(e) {
var link = e.target.closest('a');
if (!link) return;
var href = link.getAttribute('href');
if (!href) return;
// Check if this is a redirect page link
var title = link.textContent.trim();
var pageTitle = href.replace(/^\//, '').replace(/_/g, ' ');
// If the link text doesn't match where it's going, it's probably a resolved redirect
if (title !== pageTitle && link.closest('.citizen-typeahead')) {
e.preventDefault();
// Navigate using the redirect so our observer can catch it
window.location.href = '/index.php?title=' + encodeURIComponent(title) + '&redirect=yes';
}
}, true);
function waitAndSwitchTab(from, panelId) {
var observer = new MutationObserver(function(mutations, obs) {
var panels = document.querySelectorAll('[role="tabpanel"]');
if (panels.length > 0) {
if (panelId) {
var tab = document.querySelector('[aria-controls="' + panelId + '"]');
if (tab) tab.click();
} else if (from) {
panels.forEach(function(panel) {
if (panel.textContent.indexOf(from) !== -1) {
var id = panel.getAttribute('id');
var tab = document.querySelector('[aria-controls="' + id + '"]');
if (tab) tab.click();
}
});
}
obs.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });
}
});