Обсуждение 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)

В коде установленного у нас движка 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 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)