MediaWiki:Gadget-random book.js
Chú ý: Sau khi lưu trang, có thể bạn sẽ phải xóa bộ nhớ đệm của trình duyệt để xem các thay đổi.
- Firefox / Safari: Nhấn giữ phím Shift trong khi nhấn Tải lại (Reload), hoặc nhấn tổ hợp Ctrl-F5 hay Ctrl-R (⌘R trên Mac)
- Google Chrome: Nhấn tổ hợp Ctrl-Shift-R (⇧⌘R trên Mac)
- Internet Explorer / Edge: Nhấn giữ phím Ctrl trong khi nhấn Làm tươi (Refresh), hoặc nhấn tổ hợp Ctrl-F5
- Opera: Nhấn tổ hợp Ctrl-F5.
/**
* Thay chức năng Trang ngẫu nhiên ở thanh bên bằng Sách ngẫu nhiên.
*
* Chức năng này lấy một trang ngẫu nhiên từ API của MediaWiki, chặt đuôi tên
* trang, và chuyển hướng đến kết quả. Phương pháp này không phải ngẫu nhiên hẳn:
* một cuốn sách có rất nhiều trang sẽ xuất hiện nhiều hơn. Ngoài ra, công cụ này
* có thể chở bạn đến một trang không tồn tại nếu trang ngẫu nhiên từ API có dấu
* "/" trong tên.
*/
$(function () {
mw.loader.using("mediawiki.api", function () {
$("#n-randompage a")
.text("Sách ngẫu nhiên")
.attr("title", function () {
return $(this).attr("title").replace(/\btrang\b/g, "sách");
})
.click(function (evt) {
// Lấy một trang ngẫu nhiên từ API.
var api = new mw.Api();
api.get({
action: "query",
list: "random",
rnnamespace: "0|104|106", // (Chính), Trẻ em, Nấu ăn
rnlimit: 1,
redirects: true
}).done(function (result) {
var page = result.query.random[0];
var pageTitle = page.title;
// Kiểm tra trang có nằm trong sách hay không.
var bookTitle = pageTitle.replace(/\/.*/, "");
api.get({
action: "query",
prop: "info",
redirects: true,
titles: bookTitle
}).done(function (result) {
if (result.query.pages["-1"]) {
// Chuyển hướng đến trang mồ côi.
window.location = mw.util.getUrl(pageTitle);
}
// Chuyển hướng đến sách.
window.location = mw.util.getUrl(bookTitle);
}).fail(function(code, result) {
// Chuyển hướng đến trang sách cho đại.
window.location = mw.util.getUrl(pageTitle);
});
}).fail(function(code, result) {
// Sử dụng chức năng mặc định để lấy trang ngẫu nhiên.
window.location = mw.util.getUrl("Special:Random");
});
// Tắt chức năng mặc định.
evt.preventDefault();
});
});
});