alnafie
alnafie

Reputation: 10798

How do you set html / body tag attributes in Meteor.js?

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

Answers (3)

codingforworlddomination
codingforworlddomination

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

richsilv
richsilv

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

Turgut Sarı&#231;am
Turgut Sarı&#231;am

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

Related Questions