Обсуждение MediaWiki:Common.js
Поправка[править код]
var auto_comment = 0
добавить следует, дабы насытился Викификатор, и более не бранился словами нехорошими. Lexa 22:23, 2 июня 2007 (UTC)
- Сейчас гляну. Хорошая идея. Afinogenoff § 02:06, 3 июня 2007 (UTC)
importScript и importStylesheet[править код]
importScript и importStylesheet теперь есть в стандартном коде MediaWiki.
Александр Машин 06:16, 2 декабря 2011 (UTC)
- Верно; но, к сожалению, не достаточно разумные для того, чтобы воспринимать адрес «/что-нибудь» как начинающийся от корня сайта. —Mithgol the Webmaster 06:34, 2 декабря 2011 (UTC)
- Попробуйте importStylesheetURI ().
Александр Машин 06:39, 2 декабря 2011 (UTC)
- Попробуйте importStylesheetURI ().
В коде установленного у нас движка MediaWiki функция importStylesheetURI() определена нижеследующим способом (копирую не из реального кода, а из консоли, поэтому пробелы и переносы строк в первоисточнике могут быть другими):
function importStylesheetURI (url, media){
var l = document.createElement("link");
l.type = "text/css";
l.rel = "stylesheet";
l.href = url;
if (media){
l.media = media;
}
document.getElementsByTagName("head")[0].appendChild(l);
return l;
}
В коде MediaWiki:Common.js в настоящее время функция importStylesheet() задана вот как:
function importStylesheet( page ) {
if ( (page.charAt(0) === '/') || (page.indexOf('http:') === 0) ){
// стиль от корня движка MediaWiki или внешний
var sheetPath = page;
} else {
// стиль со страницы MediaWiki
var sheetPath = wgScriptPath + '/index.php?title=' +
escape( page.replace( ' ', '_' ) ) +
'&action=raw&ctype=text/css&dontcountme=s';
}
if (document.createStyleSheet) {
document.createStyleSheet(sheetPath); // Internet Explorer
} else {
$('head').append('<link rel="stylesheet" type="text/css" href="' + sheetPath + '" />');
}
}
Как видно, наша функция в Internet Explorer стремится сперва воспользоваться функцией document.createStyleSheet
, и лишь затем прибегает к добавлению дочернего элемента в <head>
. Уж не знаю, чем вызвано это решение, но оно, должно быть, некогда было актуально.
Впрочем, я попробую importStylesheetURI()
; если MSIE6 это переживёт, то и ладно. —Mithgol the Webmaster 08:23, 2 декабря 2011 (UTC)
- MSIE6 и впрямь пережил это, так что я считаю возможным наши определения этих функций грохнуть. —Mithgol the Webmaster 08:41, 2 декабря 2011 (UTC)
- Интересно, что Корпорация Microsoft как раз-таки рекомендует добавлять дочерние элементы в HEAD, потому что функция
document.createStyleSheet
может сработать не более 31 раза. Чёрт-те что творится. —Mithgol the Webmaster 08:46, 2 декабря 2011 (UTC)
Underscore[править код]
Opera говорит:
Uncaught exception: ReferenceError: Undefined variable: DisableExternalCounters Error thrown at line 14, column 729 in <anonymous function>() in http://traditio-ru.org/w/load.php?debug=false&lang=ru&modules=site&only=scripts&skin=vector&*: if(!_.isUndefined(DisableExternalCounters)) called from line 15, column 1520 in <anonymous function: f.Callbacks>(b, f) in http://traditio-ru.org/w/load.php?debug=false&lang=ru&modules=jquery-wiki%2Cmediawiki&only=scripts&skin=vector&version=20120317T141711Z:
и т.д. Александр Машин 07:02, 21 марта 2012 (UTC)
- Какая версия Opera? —Mithgol the Webmaster 08:04, 21 марта 2012 (UTC)
- Наблюдаю аналогичную ошибку в Opera 11.01, хотя, казалось бы, если ею зайти на тестовую страницу, то срабатывает подавляющее большинство тестов (в том числе все тесты
isUndefined
). Запустив Opera Dragonfly, с изумлением и ужасом вижу, что_.isUndefined(undefined)
выдаётtrue
, тогда как_.isUndefined(зашибиззь)
выдаётUnhandled Error: Undefined variable: зашибиззь
. Стало быть, баг в Опере: не передаёт неопределённые переменные в функции — так, что ли? —Mithgol the Webmaster 08:04, 21 марта 2012 (UTC)
- Скачиваю Оперу посвежее, проверю в ней. —Mithgol the Webmaster 08:04, 21 марта 2012 (UTC)
- По-видимому, Опера (даже новёхонькая 11.61) не в состоянии передать в функцию неопределённые переменные и считает это ошибкою, тогда как неопределённые поля объектов — дело другое. На этом я построил окольный способ достигнуть желаемого. Но, конечно, так строить браузеры нельзя — это не недофича, а реальный баг. —Mithgol the Webmaster 08:36, 21 марта 2012 (UTC)