Last modified: 2012-06-29 08:52:19 UTC
The message functions from mediawiki.js (mw.msg etc.) and the functions from mediawiki.jqueryMsg.js treat HTML in parameters differently. While mw.msg leaves it just as it is, jqueryMsg escapes every input without a way to avoid it: >>> mw.messages.set({'testmsg': 'Parameter: $1'}); true >>> mw.msg('testmsg', '<b>Bold</b>'); "Parameter: <b>Bold</b>" >>> gM('testmsg', '<b>Bold</b>'); "Parameter: <b>Bold</b>"
That's probably by design. You can give jquery objects as parameters.
(In reply to comment #1) > You can give jquery objects as parameters. OK, that works: >>> gM('testmsg', $('<b>Bold</b>')); "Parameter: <b>Bold</b>" But >>> mw.msg('testmsg', $('<b>Bold</b>')); "Parameter: [object Object]" Or in a more complex example: >>> mw.messages.set({'testmsg1': '$1 thing(s): $2', 'testmsg2': '$1 {{PLURAL:$1|thing|things}}: $2'}); true >>> mw.msg('testmsg1', 1, '<b>item</b>'); "1 thing(s): <b>item</b>" >>> mw.msg('testmsg2', 1, '<b>item</b>'); "1 thing: <b>item</b>" >>> mw.msg('testmsg1', 1, $('<b>item</b>')); "1 thing(s): [object Object]" >>> mw.msg('testmsg2', 1, $('<b>item</b>')); "1 thing: <b>item</b>" This still means that you have change the parameters in the calls to mw.msg whenever the message changes from something without "{{" to something with "{{" or vice versa. (Or when the code jqueryMsg changes, which parser to use.) So the default mw.msg should change to escape all HTML but accept jQuery objects.
Seems fixed with https://gerrit.wikimedia.org/r/#/c/8991/ I get now >>> mw.msg('testmsg2', 1, '<b>item</b>'); "1 thing: <b>item</b>" as expected.