From 46d2c4c3faf3ca2b9692337e89c5d672dbccb4a4 Mon Sep 17 00:00:00 2001 From: Juan Lago Date: Sat, 14 Nov 2015 17:15:29 +0100 Subject: [PATCH 1/3] Added onFinish event --- src/vast-vmap.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/vast-vmap.js b/src/vast-vmap.js index c47c44b..7dfd0e8 100644 --- a/src/vast-vmap.js +++ b/src/vast-vmap.js @@ -53,8 +53,9 @@ function fetchXML(url, identifier, onSuccess, onFailure) { * @param { {function()}} onError Function to call when no ads are fetched * or there was an error requesting the endpoint * @param {?VASTAd} parentAd The ad containing the results from this query + * @param {funciton()}} onFinish Fuction to call when request is finished */ -function queryVAST(endpoint, onFetched, onError, parentAd) { +function queryVAST(endpoint, onFetched, onError, parentAd, onFinish) { fetchXML(endpoint, null, function(doc) { try { new VASTAds(doc, onFetched, onError, parentAd); @@ -70,9 +71,14 @@ function queryVAST(endpoint, onFetched, onError, parentAd) { onError(); } + + if (onFinish) onFinish(); + }, function (e) { console.error("Failed to load VAST from '" + endpoint + "':", e); onError(); + + if (onFinish) onFinish(); }); } @@ -1086,7 +1092,7 @@ function VASTLinear(ad, root) { this.clickThrough = null; this.duration = null; this.adParameters = null; - + var i; var clicks = root.getElementsByTagName("VideoClicks"); From 6bbe44263e3bdd447d1195ddaa620109a6d11613 Mon Sep 17 00:00:00 2001 From: Juan Lago Date: Sat, 14 Nov 2015 17:21:08 +0100 Subject: [PATCH 2/3] VAST request can accept cookies from Ad provider --- src/vast-vmap.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vast-vmap.js b/src/vast-vmap.js index 7dfd0e8..3e38dfd 100644 --- a/src/vast-vmap.js +++ b/src/vast-vmap.js @@ -41,6 +41,7 @@ function fetchXML(url, identifier, onSuccess, onFailure) { }; request.open("GET", url, true); + request.withCredentials = true; // Accept cookies request.send(null); } From f62173f9b3612e8b41ee208e5d263fb3d18b13cf Mon Sep 17 00:00:00 2001 From: Juan Lago Date: Sat, 14 Nov 2015 19:23:52 +0100 Subject: [PATCH 3/3] Added IE9 Compatibility --- src/vast-vmap.js | 57 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/src/vast-vmap.js b/src/vast-vmap.js index 3e38dfd..587ae34 100644 --- a/src/vast-vmap.js +++ b/src/vast-vmap.js @@ -25,20 +25,57 @@ var VASTAds, VASTAd, VASTLinear, VASTNonLinear, VASTCompanion; * identifier. */ function fetchXML(url, identifier, onSuccess, onFailure) { - var request = new XMLHttpRequest(); - request.onreadystatechange = function() { - if (request.readyState === 4) { - if (request.status === 200) { - if (request.responseXML !== null) { - onSuccess(request.responseXML, identifier); + var request; + + // IE 9 CORS method + if (window.XDomainRequest) + { + request = new XDomainRequest(); + + request.onload = function() + { + + if (request.contentType != null && request.responseText != null) + { + + // IE < 10 requires to parse the XML as string in order to use the getElementsByTagNameNS method + var parser = new DOMParser(); + var doc = parser.parseFromString(request.responseText, 'text/xml'); + + onSuccess(doc, identifier); + + } + else + onFailure(request, identifier); + + }; + + request.onerror = request.ontimeout = function() + { + onFailure(request, identifier); + }; + + } + else // The standard one + { + + request = new XMLHttpRequest(); + + request.onreadystatechange = function() { + if (request.readyState === 4) { + if (request.status === 200) { + if (request.responseXML !== null) { + onSuccess(request.responseXML, identifier); + } else { + onFailure(request, identifier); + } } else { onFailure(request, identifier); } - } else { - onFailure(request, identifier); } - } - }; + }; + + } request.open("GET", url, true); request.withCredentials = true; // Accept cookies