MediaWiki:Common.js
Apariencia
Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.
- Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
- Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
- Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */
// Highlight search terms when coming from search results
(function() {
function getSearchTerms() {
var searchParams = new URLSearchParams(window.location.search);
var search = searchParams.get('search');
return search ? search.split(/\s+/) : [];
}
function highlightSearchTerms() {
var terms = getSearchTerms();
if (!terms.length) return;
var content = document.getElementById('mw-content-text');
if (!content) return;
terms.forEach(function(term) {
if (term.length < 3) return; // Skip short terms
var regex = new RegExp('(' + term.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + ')', 'gi');
var walker = document.createTreeWalker(
content,
NodeFilter.SHOW_TEXT,
null,
false
);
var node;
var nodes = [];
while (node = walker.nextNode()) {
nodes.push(node);
}
nodes.forEach(function(node) {
if (node.parentNode.nodeName !== 'SCRIPT' &&
node.parentNode.nodeName !== 'STYLE' &&
!node.parentNode.classList.contains('searchmatch')) {
var text = node.textContent;
if (regex.test(text)) {
var span = document.createElement('span');
span.innerHTML = text.replace(regex, '<span class="searchmatch">$1</span>');
node.parentNode.replaceChild(span, node);
}
}
});
});
}
// Add CSS styles for highlighted terms
var style = document.createElement('style');
style.textContent = `
.searchmatch {
background-color: #ffeb3b;
padding: 2px;
border-radius: 2px;
}
`;
document.head.appendChild(style);
// Run highlighter when page loads
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', highlightSearchTerms);
} else {
highlightSearchTerms();
}
})();