ONEcount Javascript Widgets

Last modified by Admin on 2021/08/02 13:54


(updated 10/12/16)


all.min.js: This is the main script that's used for data collection, interacting with ONEcount.

The main object in this script is called GCN. GCN contains the following objects:

variables: this is a container for variables that may be used by others objects in GCN

cookie: utility for interacting with cookies. Contains the following functions:

    • read(name) : returns the value of cookie name or null if it doesn't exist

    • set(name, value, options): create a cookie called name with value value. options is an object which can have expires, path, domain and secure properties

    • remove(name, options): removes the cookie name. options is an object which can have the property sublevel

url: utility for interacting with url. Contains the following functions:

    • parse(url): parses the url and returns an object containing these properties : href, withoutHash, url, origin, protocol, protocolseparator, credhost, cred, user, pass, host, hostname, port, pathname, segment1, segment2, search, hash

    • params(url): return a key value pair object of the query string parameters

    • build(url, params): create a new url based of the provided url and params 

 

script: utility for interacting with scripts. Contains the following functions:

    • add(url): creates a script tag using document.write whose src is url

    • addInHeader(url): create a script tag in the head whose src is url

    • addAsync(url): create a script tag in the body whose src is url

    • createScript(url): helper function that create a script element whose src is url

method: utility for dynamically invoking methods. Contains the following functions:

    • call(f, options): calls the function f

event: utility for interacting with event. Contains the following functions:

    • on(type, listener, f) : add a listener that executes the function f when event of type type occurs on listener

    • off(type, listener, f): removes the listener that executes the function f when event of type type occurs

random: utility for generating random number and string. Contains the following functions:

    • number(): return a random integer

    • string(count): return a random string of length count

tracker: this is used for tracking web impressions. Contains many functions used internally but the 2 functions accessible publicly are:

    • init(_gcnt): called on page load to initialize the tracker which which will start collecting impressions. _gcnt is an array that contains options used by the tracker.//add list of options ?

    • track(url, title, referer): used to dynamically track a page with url url, title title and referer referer. This can be used with infinite scroll.

ONEcount: object for interacting with ONEcount application. This object contains many functions and objects.

a. Functions:

    • init(): initialize the widget

    • parseScript(): parse the main script that was loaded to retrieve the clientId

    • getClientId(): return the clientId

    • getOrigin(): returns the script's origin

    • getScript(): return the current script that is being executed

    • setUrls(): set the different urls endpoint (automation, login/logout, tracking, viewability, form embed, ...) used to interact with ONEcount

    • setLinks(): set the login/logout url as link.

    • setTargeting() : loads the automation script used for targeting

    • loadAdditionalScripts(): load additional scripts based on the clientId

    • isLoggedIn(): return true if the user is logged in

    • checkPerm(params): makes a jsonp request to the perm server to check whether the user has access to the page or not. params is an object that can have url, referrer, resource properties. If url and referrer are not provided, they will be retrieved from the window element. This is actually calling tracker.track(url, title, referer). If the callback is provided, it will be called once a response is received from the server. This is being used to return the number of articles read for windowed products

    • gate(resource): makes a jsonp request to the perm server to take the user to the registration page for resource. If the user is already subscribed then nothing will happen.


b.  Objects

    • urls: this object contains all the url used to interact with ONEcount. These url already have the clientId appended to them.

    • links: this object contains links to the login/logout in ONEcount. Below are the functions:

      • login() : return the link needed for login

      • logout(): return the link need for logout

      • This also contains other helper functions such as setReturn(returnUrl), getReturnParam(returnUrl), encodeUrl(url), decodeUrl(url)

    • modal: used to create a modal. This is being used for the form popup and the custom targeting pop up Contains the following functions:

      create(options): create a modal. options is an object that contains the properties html, styles, close

      getCloseButton(options): return the close button element. options is an object that contains the properties close

      getContent(options): return a div that contains the content of the modal. options is an object that contains the properties html

      loadStyles(options): load css styles used for the modal. options is an object that contains the properties style

    • functions: this is an object contains functions used by other widgets on the page. Contains the following functions:

      dfp_sb_ad_capture(e): used to prepare data for DFP Small Business viewability script. e is and event containing data about the data (creativeId, lineItemId)

      get_user_data(): returns the user's ocid and tempid in the format ocid.tempid

    • form: used to create a pop up form or for form embed. Contains one function and another object:

      embed(options): this function is used to embed a form on the page

      popup: this object is used to display the form as a popup. Contains the following functions:

      resize(id): re sizes the form with document id id

      display(options): displays the form as a pop up

      message(event): used to interact with the form in the iframe via postMessage


On top of this all.min.js also contains a library used for browser fingerprinting as well as a library used for getting flash info on the browser. The content of this files used to spread in 3 different files and now they're in one place.

v.js: This script is used to capture viewability data for DFP Premium and Openx Open Source (Revive).

v_sb.js: This script is used to capture viewability data for DFP Small Business

fs.js: This is the form scrapper script. Used to scrapped content from 3rd party forms when they are being submitted.

GCN.onecount.track(url, title, referrer, resourceId, callback):

By default, ONEcount widgets track impressions on each page load. For sites where one article is displayed per page, this works fine. But in cases where articles are displayed on the same page, i.e. infinite scroll, only the first one is tracked.

This function is designed to provide an impression track for each article on a page. The function expects three parameters:

  • url: The url of the article that is supposed to be tracked. This is required.
  • title: This should be the same as the title tag if the article was displayed alone on the page.
  • referrer: The referrer of article. (For infinite scroll this can be the previous article in the scroll.)
  • resourceId: this is optional. If set to a valid resourceId, that resource that will be used in order to perform gating or increase view_count. You can pass 0 in order to use the default resource associated with the url if any

  • callback: function to be called after a request has been sent to ONEcount. This can return the number of articles read by the user for products with limit in timeframe

While the impressions are being tracked, ONEcount will also check whether the user's subscription is still valid or not (e.g. limit of X articles per month has been reached). If the subscription is not valid, then the user will be taken to the subscription page.

Let's assume I have a page where the first article is displayed when the page loads and three mores articles are displayed as the user scrolls down. The first article will be tracked by ONEcount, but for the three other articles, a call to GCN.onecount.track needs to be made to tell ONEcount that the articles have been displayed. The url should be the direct url of the article. The referrer should be the previous article's url.

GCN.onecount.gate(resourceId, callback):

Gating is currently done based on a REGEX match of a url segment on page load. This function is designed to allow customers to gate content where gating can not be sufficiently managed using URL segments, or where content must be gated without a page load.

This function expects two parameter :

  1. resourceId : this is the resourceId that will be used for gating and it's required.
  2. callback: this is a function that can be passed. The response from the gating request will be made available in the callback. The callback should expect one parameter which is a JSON object. The JSON object has a property called hasAccess which is a boolean (true/false). true means the user has access and false means he does not.

Resource Ids are available in ONEcount on the resource listing page.

To create a resource that uses this function, choose “Function” from the resource type pull-down, then enter a text return value in the box below. This return value is ignored for now, but may be used to trigger gating in the future.

When the function is called and the user is not subscribed to the product that the resource belongs to, he will be taken to the registration page in order to do so. If he is already subscribed to the product then nothing will happen.



NOTE:   If page load speed is ever a concern, it is recommended to use a third party service (such as tools.pingdom.com). By doing so, it will generate report of all items loading on your webpage along with their load times. Simply copy and paste your page's URL into the designated field and a test will be conducted immediately. If any oc.net item exceeds a load speed of 500ms, please enter a Helpdesk ticket for us to review. Testing page load speeds is a very informative way of identifying items that are directly impacting page performance. It is worth mentioning that there will be items that continuously load in short spurts (ex. v.js for viewability data) however those short spurts do not negatively impact load speed performance.