Socket
Socket
Sign inDemoInstall

headful

Package Overview
Dependencies
0
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    headful

Set <head> properties (e.g. title and meta tags) from JavaScript.


Version published
Weekly downloads
1.9K
increased by15.4%
Maintainers
1
Install size
11.3 kB
Created
Weekly downloads
 

Readme

Source

Headful

Headful is a small JavaScript library to set properties in the HTML <head> (for example <title> and meta tags).

Important: Most properties supported by Headful are only useful when they are set before the browser executes the JavaScript. For example, you won't be able to change properties used for URL sharing on social networks (e.g. Facebook, Twitter) or messengers (WhatsApp, Telegram). That means you should either prerender your pages before the deployment or use server-side rendering.

PS: Are you using Vue.js? Then you should checkout vue-headful instead.

Install

npm i headful

Usage

import headful from 'headful';

headful({
    title: 'Title from Headful',
    description: 'Description from Headful',
});

Note that Headful does not add missing HTML elements, it only adds attribute values. So it is important that you add everything that you want to have populated in your HTML first.

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta itemprop="name">
    <meta property="og:title">
    <meta name="twitter:title">
    <meta name="description"/>
    <meta itemprop="description">
    <meta property="og:description">
    <meta name="twitter:description">
    <script src="script.js"></script>
</head>
<body>
<!-- ... -->
</body>
</html>

Documentation

Headful supports several different head properties. Below you can find a list of Headful properties and for each of them which elements they populate.

For more information on everything you can put into <head>, have a look at https://gethead.info/.

import headful from 'headful';

headful({
    title: '',
    // * <title>
    // * <meta itemprop="name">
    // * <meta property="og:title">
    // * <meta name="twitter:title">

    description: '',
    // * <meta name="description">
    // * <meta itemprop="description">
    // * <meta property="og:description">
    // * <meta name="twitter:description">

    keywords: '',
    // string or array
    // * <meta name="keywords">

    image: '',
    // * <meta itemprop="image">
    // * <meta property="og:image">
    // * <meta name="twitter:image">

    lang: '',
    // * <html lang>
    // * <meta property="og:locale"> - only for language codes like ll-CC

    ogLocale: '',
    // * <meta property="og:locale">
    
    url: '',
    // <link rel="canonical">
    // <meta property="og:url">
    // <meta name="twitter:url">
    
    html: {
        selector1: {attr1: 'val1', attr2: 'val2'},
        selector2: {attr1: 'val1', attr2: 'val2'},
    },
    // add/change arbitrary attributes on elements in the overall document using CSS selectors

    head: {
        selector1: {attr1: 'val1', attr2: 'val2'},
        selector2: {attr1: 'val1', attr2: 'val2'},
    },
    // add/change arbitrary attributes on elements within the <head> using CSS selectors

});

Note that are some head properties that can be specified with different Headful property names (e.g. <meta property="og:locale">). There is always one Headful property that tries to set as many head properties as possible (e.g. lang). But if you also specify another conflicting Headful property (e.g. ogLocale), then the more specific one will win. See the example below.

headful({
    // Sets <html lang="en-GB"> and <meta property="og:locale" content="en_GB">
    lang: 'en-GB',
});


headful({
    // Sets <html lang="en-AU"> and does not change <meta property="og:locale"> as we also specify 'ogLocale'
    lang: 'en-AU',

    // Sets <meta property="og:locale" content="en_GB"> only
    ogLocale: 'en_GB',
});

If you want to remove a previously defined attribute from an element, you can set it to null or undefined as in the example below:

headful({ title: 'Headful' });
// <title>Headful</title>
// <meta itemprop="name" content="Headful">
// <meta property="og:title" content="Headful">
// <meta name="twitter:title" content="Headful">

headful({ title: null });
// <title></title>
// <meta itemprop="name">
// <meta property="og:title">
// <meta name="twitter:title">

Compatibility

Headful works with every current and most reasonably old web browsers including:

  • Firefox 34+
  • Chrome 45+
  • Edge
  • Safari 9+

If you need to support even more browsers (including Internet Explorer), you have to add a polyfill for Object.assign (e.g. with core-js). When you do that, the following browsers are supported:

  • Firefox 4+
  • Chrome 5+
  • Edge
  • Safari 5+
  • Internet Explorer 9+

Extensions

Keywords

FAQs

Last updated on 04 Apr 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc