2015-10-20 2 views
0

I'm облицовочный проблема со следующим методом JS задается ComScore:Comscore вопрос в Android

function ns_onclick(q, f, u, b, o) { 
var i = window, 
    l = i.ns_p, 
    m = l && l.src, 
    s = "&ns_", 
    h = document.referrer.replace(/\/$/, ""), 
    f = f || q.href, 
    o = o || "", 
    j = { 
     t: 0, 
     o: 0 
    }, 
    e = eventURL = c1_match = c2_match = "", 
    c = /\bc1=[^&]+\b/i, 
    g = /\bc2=[^&]+\b/i, 
    p = (i.encodeURIComponent ? encodeURIComponent : escape), 
    n = "1.11111.11"; 


if (m && (c1_match = l.src.match(c)) && !c.test(u)) { 
    e += "&" + c1_match 
} 
if (m && (c2_match = l.src.match(g)) && !g.test(u)) { 
    e += "&" + c2_match 
} 
if (m) { 
    var t = l.src, 
     k = t.indexOf("?"); 
    eventURL = t.substr(0, k > -1 ? k : t.length) + "?" 
} 
eventURL = [eventURL, u, e, s, "type=", b, s, "action=view", s, "_t=", +new Date, h ? s + "referrer=" + p(h) : "", s, "sc_sv=", n, s, "sc_href=", p(f).substr(0, 1000)].join(""); 

var r = q && q.target ? q.target.replace(/^_/, "") : "self", 
    d = new Image(); 

if (i[r]) { 
    j.t = (function(w, v, a) { 
     return function() { 
      clearTimeout(a.o); 
      d.onload = d.onerror = function() { 
       return 
      }; 
      i[w].location.href = v 
     } 
    })(r, f, j); 
    j.o = setTimeout(j.t, 5000); 
    d.onload = d.onerror = j.t 
} else { 
    i.open(f, r, o); 
} 
d.src = eventURL; 
return false}; 

Путь я называю этот метод, как это следующим образом:

<button onclick="ns_onclick(this, '', 'osp_ev=event', 'clickin');" nav-transition="none" ng-show="backButtonHiden" class="button button-icon button-clear ion-navicon-round" menu-toggle="sideMenuToggle(false)" data-tap-disabled="true"></button> 

Метод и он, кажется, проходит весь путь без каких-либо проблем. Но так или иначе, это делает мое приложение к сбою с отображением ошибки феллинг на экране:

enter image description here

Что беспокоит меня больше всего в том, что это отлично работает на IOS. Похоже, Android пытается открыть файл, который, очевидно, не существует ... Любые идеи?

EDIT: я обнаружил, что проблема находится в следующей строке:

i[w].location.href = v 

v «не определен», и это делает приложение к сбою !, как вы можете видеть ... код на ns_onclick функция беспорядок, и JS на самом деле не мое поле. Кто-нибудь когда-либо работал с аналитикой Comscore в гибридном приложении? если да, есть ли разница между его использованием на веб-сайте или в приложении?

ответ

2

Я, наконец, получил его! проблема была не в коде JS, предоставленном Comscore, он был размещен в теге HTML. Это то, что я делал:

<button onclick="ns_onclick(this, '', 'osp_ev=event', 'clickin');" nav-transition="none" ng-show="backButtonHiden" class="button button-icon button-clear ion-navicon-round" menu-toggle="sideMenuToggle(false)" data-tap-disabled="true"></button> 

И это, как это должно быть сделано:

<a href="#/path" onclick="ns_onclick(this, '', 'osp_ev=event', 'clickin');" nav-transition="none" ng-show="backButtonHiden" class="button button-icon button-clear ion-navicon-round" menu-toggle="sideMenuToggle(false)" data-tap-disabled="true"></a> 

Как вы можете заметить, i've изменил < кнопку> тег в < a>, и добавил href собственности на него. Обязательно установить href в тег html, и это может быть сделано только с помощью тега ссылки. Я попытался добавить кнопку href к кнопке, просто чтобы попробовать, но она не работает ... я не знаю, потому что она работает только с < a> или по любой другой причине ... как я сказал по этому вопросу, на самом деле это не моя область.

Я надеюсь, что это поможет, если вы столкнетесь с той же проблемой.