Reputation: 10798
I need to set attributes on the html tag or alternatively the body tag of the document in a Meteor.js application.
Specifically I want to have <html dir="rtl">
or <body dir="rtl">
..
Trying the latter, I receive the console message:
While building the application:
client/views/layout/layout.html:7: Attributes on <body> not supported
=> Your application has errors. Waiting for file change.
So how do you do this?
Upvotes: 15
Views: 5721
Reputation: 1129
In case someone else stumbles upon this to realise the above solutions don't work anymore, here's what worked for me with Meteor 2.13:
Meteor.startup(() => {
document.documentElement.setAttribute('dir', 'rtl');
});
Found it here: https://github.com/meteor/meteor-feature-requests/issues/322
Upvotes: 1
Reputation: 8013
You have to inject them on start-up in your client-side Javascript:
Meteor.startup(function() {
$('html').attr('dir', 'rtl');
});
UPDATE
Note that you can now set attributes in-line for body tags, and they'll be concatenated by Meteor in the same way as the contents of the body tag:
<body data-atttribute="foobar"></body>
You can have multiple different body tags, and they'll get combined, so the above will just add a single attribute to your existing body, rather than replacing it.
To the best of my knowledge, HTML tag attributes still need to be set via Javascript.
Upvotes: 19
Reputation: 573
Attributes for HTML tag can be set on startup
by using WebApp.addHtmlAttributeHook
function. Here is an example:
Meteor.startup(function() {
WebApp.addHtmlAttributeHook(function() {
return {
"dir": "rtl"
}
})
});
Make sure you call this on server, not client.
Upvotes: 9