en

analytics-frame.html

HTML icon analytics-frame.html — HTML, 3 KB (4072 bytes)

File contents

<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta  name="referrer" content="origin" />
    <script>
      /* jshint ignore:start */
      // jscs:disable
      // https://gist.github.com/982883
      var uuid = function(a) {
        return a           // if the placeholder was passed, return
          ? (              // a random number from 0 to 15
            a ^            // unless b is 8,
            Math.random()  // in which case
            * 16           // a random number from
            >> a/4         // 8 to 11
            ).toString(16) // in hexadecimal
          : (              // or otherwise a concatenated string:
            [1e7] +        // 10000000 +
            -1e3 +         // -1000 +
            -4e3 +         // -4000 +
            -8e3 +         // -80000000 +
            -1e11          // -100000000000,
            ).replace(     // replacing
              /[018]/g,    // zeroes, ones, and eights with
              uuid         // random hex digits
            );
      };

      window.frameHash = window.location.hash.replace(/^#/, '');

      var postToParent = function(message) {
        if (window.parent.postMessage != null) {
          window.parent.postMessage(message, '*');
        }
      };

      var onDidReceiveMessage = function(e) {
        if (e.data.id === frameHash) {
          var xhr = new XMLHttpRequest(),
              now = new Date(),
              data = {
                messageId: uuid(),
                sentAt: now.toISOString(),
                batch: [ {
                  event: e.data.event,
                  properties: e.data.properties,
                  type: 'track',
                  messageId: uuid(),
                  timestamp: now.toISOString(),
                  context: {
                    ip: '0.0.0.0',
                    page: {
                      path: '/',
                      referrer: '',
                      search: '',
                      title: '',
                      url: 'http://'
                    }
                  },
                  integrations: {},
                  userId: e.data.aid
                } ]
              };

          xhr.onreadystatechange = function() {
            if (xhr.readyState === 4) {
              postToParent({
                id: frameHash,
                message: 'xhr sent'
              });
              window.onDidReceiveMessage = null;
            }
          };

          xhr.open('POST', 'https://metrics.articulate.com/v1/import');
          xhr.setRequestHeader('Content-Type', 'application/json');
          xhr.send(JSON.stringify(data));
        }
      };

      if ('onmessage' in window) {
        window.addEventListener('message', onDidReceiveMessage, false);
      } else {
        // coming from flash, we will use older JS since we can expect some older IE versions
        var validProps = [
          'os', 'browser', 'playerVersion', 'playerType', 'lmsPresent', 'tinCanPresent',
          'aoSupport', 'publishSource', 'protocol', 'productChannel', 'cid'
        ];
        var aid,
            props = window.location.search.replace(/^\?/, '').split('&'),
            config = {};

        for (var i = 0, ii = props.length, currProp; i < ii; i++) {
          currProp = props[i].split('=');
          if (validProps.indexOf(currProp[0]) > -1 && currProp.length === 2) {
            config[currProp[0]] = currProp[1];
          } else if (currProp[0] === 'aid') {
            aid = currProp[1];
          }
        }

        window.onDidReceiveMessage({
          data: {
            id: frameHash,
            event: 'player_course_load',
            properties: config,
            aid: aid
          }
        })

      }
      /* jshint ignore:end */
      // jscs:enable
    </script>
  </head>
  <body>
  </body>
  <script>
    postToParent({
      id: window.frameHash,
      message: 'loaded'
    });
  </script>
</html>
Error
There was an error while rendering the portlet.
 

International Training Centre of the ILO

Viale Maestri del Lavoro, 10
10127 Turin - Italy

Contact us