MediaWiki:Common.js: Perbedaan antara revisi
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
Tidak ada ringkasan suntingan Tanda: Suntingan perangkat seluler Suntingan peramban seluler |
||
| Baris 61: | Baris 61: | ||
/* | /* Smart Glossary Pop-up (Pratinjau Link Ringan) */ | ||
$(document).ready(function() { | $(document).ready(function() { | ||
if (mw.config.get('wgIsArticle') && mw.config.get(' | if (mw.config.get('wgIsArticle') && mw.config.get('wgAction') === 'view') { | ||
$( | |||
// | var timer; | ||
if($ | // Targetkan link di dalam konten artikel saja | ||
$('#mw-content-text a').on('mouseenter touchstart', function(e) { | |||
var $link = $(this); | |||
// | var title = $link.attr('title'); | ||
' | // Jangan jalan kalau link-nya bukan artikel (misal link luar atau redlink) | ||
'<div | if (!title || $link.hasClass('new') || $link.hasClass('external')) return; | ||
timer = setTimeout(function() { | |||
$.getJSON(mw.util.wikiScript('api'), { | |||
action: 'query', | |||
prop: 'extracts', | |||
exintro: true, | |||
exsentences: 2, // Ambil 2 kalimat aja biar singkat | |||
titles: title, | |||
explaintext: true, | |||
format: 'json' | |||
}, function(data) { | |||
var pages = data.query.pages; | |||
var pageId = Object.keys(pages)[0]; | |||
var extract = pages[pageId].extract; | |||
if (extract) { | |||
// Hapus pop-up lama kalau ada | |||
$('.wiki-preview').remove(); | |||
var preview = $('<div class="wiki-preview" style="position:absolute; background:#fff; color:#202122; border:1px solid #a2a9b1; padding:12px; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.2); z-index:10001; font-size:13px; max-width:250px; line-height:1.4; opacity:0; transition:opacity 0.3s ease;"></div>'); | |||
preview.text(extract); | |||
$('body').append(preview); | |||
// Atur posisi pop-up di deket link | |||
var offset = $link.offset(); | |||
preview.css({ | |||
}, | top: offset.top + 25, | ||
left: Math.min(offset.left, $(window).width() - 270), | |||
opacity: 1 | |||
}); | |||
// Hilang kalau klik di mana aja atau setelah 5 detik | |||
setTimeout(function() { $('.wiki-preview').fadeOut(function() { $(this).remove(); }); }, 5000); | |||
} | |||
}); | |||
}, 600); // Delay 0.6 detik biar gak ganggu kalau cuma scrolling lewat | |||
}).on('mouseleave', function() { | |||
clearTimeout(timer); | |||
}); | |||
$(document).on('mousedown touchstart', function() { | |||
$('.wiki-preview').remove(); | |||
}); | }); | ||
} | } | ||
}); | }); | ||