Виджет Mediawiki не запускает JavaScript

У меня нелепая проблема, которая кажется намного сложнее, чем она должна быть на самом деле.

Уже около трех дней я пытаюсь найти способ запустить javascript на страницах википедии, и кажется, что это почти невозможно. (Я могу заставить его работать под common.js, но хочу, чтобы он работал только на определенных страницах.

Похоже, что одним из вариантов является использование виджетов, но всякий раз, когда я вставляю скрипт, медиавики меняет его и удаляет ‹> (меняет его на < и >), что означает, что он не будет работать, и я нигде не могу найти ни одного упоминания. как заставить Mediawiki прекратить делать это для Mediawiki или для расширения Widget. Любая помощь приветствуется.

В качестве примера я поместил следующий код в widget:redbox

    <noinclude>
This is a test
</noinclude>
<includeonly><script> type="text/javascript"> console.log("I am alie"); </script></includeonly>

И что я получаю обратно

This is a test fckLR &lt;script&gt; type="text/javascript"> console.log("I am alie"); &lt;/script&gt;fckLR

person vrghost    schedule 27.03.2015    source источник
comment
Если вы запустите это на машине Centos, вероятно, дело в том, что apache не может писать в compile_templates, хотя mediawiki не может предоставить полезное сообщение об ошибке, поэтому мне потребовалось около полдня, чтобы понять это. Если медиавики:виджеты установлены правильно, код ‹includeonly›‹script› type=text/javascript› console.log(I am alie); ‹/script›‹/includeonly› должен работать.   -  person vrghost    schedule 27.03.2015


Ответы (2)


Самое простое решение — поместить скрипт в common.js, который будет работать только в том случае, если на странице существует элемент с определенным идентификатором (например, $( '#some-id' ).length > 0).

person Tgr    schedule 28.03.2015

Поскольку никто не указал, что я собираюсь сказать, я, вероятно, что-то упустил... Также я знаю, что этот пост очень старый, но есть ли причина, по которой type=text/javascript не находится внутри открывающего тега script?

Я действительно не понимаю, почему размещение атрибутов за пределами открывающего тега может быть полезным.

На всякий случай, если это действительно ошибка и это все, правильный синтаксис будет таким:

<includeonly>
  <script type="text/javascript">
    console.log("Hello, underworld!");
  </script>
</includeonly>

person Daniel Nagaoka    schedule 13.03.2018