MediaWiki:Mobile.js:修订间差异
imported>=海豚= 无编辑摘要 |
imported>AnnAngela 无编辑摘要 |
||
| 第6行: | 第6行: | ||
(function ($, mw) { //使用匿名函数以避免污染顶级变量 | (function ($, mw) { //使用匿名函数以避免污染顶级变量 | ||
/* 函数定义体 */ | /* 函数定义体 */ | ||
//链接提示 | |||
function linkConfirm() { | |||
mw.loader.using('mediawiki.Uri').then(function() { | |||
if ($('body').css('position') === 'static') $('body').css('position', 'relative'); | |||
var prompt = $('<div/>').attr('class', 'linkConfirmprompt'); | |||
prompt.css('max-width', $('#mw-content-text').width() - 4); | |||
var textnode = $('<div/>').attr('class', 'linkConfirmpromptTextnode'); | |||
var text = $('<span/>'); | |||
textnode.append(text); | |||
var check = window.CSS && CSS.supports && CSS.supports('-webkit-line-clamp', '2') ? (function() { | |||
text.css({ | |||
display: '-webkit-box', | |||
'-webkit-line-clamp': '2', | |||
'-webkit-box-orient': 'vertical', | |||
'word-break': 'break-all', | |||
'text-overflow': 'ellipsis', | |||
overflow: 'hidden', | |||
}); | |||
return $.noop; | |||
})() : function(text) { | |||
if (text.height() > 44.8) { | |||
text.text(text.text() + '……'); | |||
while (text.height() > 44.8) { | |||
text.text(text.text().slice(0, -3) + '……'); | |||
} | |||
} | |||
}; | |||
prompt.append('您点击了一个链接,地址为:') | |||
.append(textnode) | |||
.append($('<div/>').attr('class', 'linkConfirmpromptAlert').append('此网页不属于本网站,不保证其安全性').hide()); | |||
prompt.append($('<a/>').text('继续访问').on('click', function() { | |||
//window.open(prompt.data('href'), '_blank', "noopener,noreferrer"); | |||
window.open('javascript:window.name;', '<script>location.replace("' + prompt.data('href') + '");/* ' + Math.random() + ' */<\/script>'); | |||
})).append($('<a/>').text('取消')).on('click', function(e) { | |||
if (!$(e.target).is('a')) return false; | |||
prompt.fadeOut(137); | |||
}); | |||
prompt.appendTo('body'); | |||
$('#mw-content-text').on('click', function(e) { | |||
var self = $(e.target); | |||
if (!self.is("a")) return; | |||
if (!e.target.href || /^javascript:/.test(e.target.href) || $(e.target).is('.image')) return true; | |||
if (!e.target.dataset.linkid) e.target.dataset.linkid = (Math.random() + '').replace(/\D/g, ''); | |||
if (prompt.is(':visible') && prompt.data('linkid') === e.target.dataset.linkid) return false; | |||
prompt.fadeOut(137); | |||
var uri = new mw.Uri(e.target.href); | |||
if (/\.moegirl\.org$/.test(uri.host)) { | |||
if (!self.closest('.heimu')[0]) return true; | |||
text.text(decodeURI(self.attr('href'))); | |||
$('.linkConfirmpromptAlert').hide(); | |||
} else { | |||
text.text(uri); | |||
$('.linkConfirmpromptAlert').show(); | |||
} | |||
var promptTop = 0, | |||
promptLeft = 0; | |||
var offsetParent = self; | |||
do { | |||
promptTop += offsetParent.offset().top; | |||
promptLeft += offsetParent.offset().left; | |||
offsetParent = offsetParent.offsetParent(); | |||
} while (!offsetParent.is("html, body")); | |||
promptTop += self.outerHeight() + 3; | |||
promptLeft += self.outerWidth() / 2 - prompt.outerWidth() / 2; | |||
if (promptTop + prompt.outerHeight() > $(document).height() - 3) promptTop = $(document).height() - prompt.outerHeight() - 3; | |||
if (promptLeft + prompt.outerWidth() > $(window).width() - 3) promptLeft = $(window).width() - prompt.outerWidth() - 3; | |||
if (promptLeft < 0) promptLeft = 3; | |||
prompt.css({ | |||
top: promptTop + 'px', | |||
left: promptLeft + 'px', | |||
}); | |||
window.setTimeout(check, 0, text); | |||
prompt.data({ | |||
href: uri, | |||
linkid: self[0].dataset.linkid, | |||
}); | |||
prompt.fadeIn(137); | |||
return false; | |||
}); | |||
}); | |||
} | |||
//Tabs | //Tabs | ||
function tabs() { | function tabs() { | ||