User:Mike Dillon/Scripts/searchNewWindow.js
< User:Mike Dillon | Scripts
Note: You may have to bypass your browser’s cache to see the changes. In addition, after saving a sitewide CSS file such as MediaWiki:Common.css, it will take 5-10 minutes before the changes take effect, even if you clear your cache.
- Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
- Konqueror and Chrome: click Reload or press F5;
- Opera: clear the cache in Tools → Preferences;
- Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.
- This script lacks a documentation subpage. Please create it.
- Useful links: root page • root page’s subpages • links • redirects • your own
// Requires: [[User:Mike Dillon/Scripts/i18n.js]], [[User:Mike Dillon/Scripts/easydom.js]]
// searchNewWindowDefault: Controls default state of checkbox on page load; "false" if unspecified
var searchNewWindowDefault;
if (searchNewWindowDefault == null) {
searchNewWindowDefault = false;
}
// Messages
wfAddMsg("en", "searchNewWindowLabel", "New window?");
wfAddMsg("es", "searchNewWindowLabel", "¿Ventana nueva?");
$(function () {
// Find the search form
var searchform = document.getElementById("searchform");
if (!searchform) return;
// Get the first div inside (holds the input elements)
var searchdiv = searchform.getElementsByTagName("div")[0];
if (!searchdiv) return;
with (easydom) {
// Build the checkbox and onchange handler
var newWindowCheckbox = input({
"id": "searchNewWindow",
"type": "checkbox",
"onchange": function () {
if (this.checked) {
searchform.setAttribute("target", "_blank");
} else {
searchform.setAttribute("target", "_top");
}
}
});
// Add the checkbox and label to the div
searchdiv.appendChild(div(
{ "class": "searchNewWindow" },
newWindowCheckbox, " ",
label({ "for": "searchNewWindow" }, wfMsg("searchNewWindowLabel"))));
}
// If searchNewWindowDefault is true, click the checkbox
if (searchNewWindowDefault) {
newWindowCheckbox.click();
}
});