Android 中的 Comscore 问题
Comscore issue in Android
我遇到了 comscore 给出的以下 JS 方法的问题:
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>
该方法被完美调用,似乎一路走来没有任何问题。但不知何故,它使我的应用程序崩溃并在屏幕上显示以下错误:
最让我担心的是这在 iOS 上运行得很好。似乎 Android 正在尝试打开文件,但显然不存在...有什么想法吗?
编辑: 我发现问题出在以下行:
i[w].location.href = v
v 是 "undefined",它使应用程序崩溃!如您所见... ns_onclick 函数的代码是乱七八糟,JS真的不是我的领域。有没有人在混合应用程序中使用过 Comscore 分析?如果是这样,在网站或应用程序上使用它有什么区别吗?
我终于明白了!问题出在 Comscore 提供的 JS 代码上,它位于 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>
如您所见,我将 < button > 标签更改为 < a > 标签,并添加了 href 属性 到它。必须将 href 设置为 html 标签,这只能通过 link 标签来完成.我试图将 href 添加到按钮,只是为了试一试,但它不起作用......我不知道这是因为它只适用于 < a > 或任何其他原因...正如我在问题上所说,这实际上不是我的领域。
希望对遇到同样问题的你有所帮助
我遇到了 comscore 给出的以下 JS 方法的问题:
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>
该方法被完美调用,似乎一路走来没有任何问题。但不知何故,它使我的应用程序崩溃并在屏幕上显示以下错误:
最让我担心的是这在 iOS 上运行得很好。似乎 Android 正在尝试打开文件,但显然不存在...有什么想法吗?
编辑: 我发现问题出在以下行:
i[w].location.href = v
v 是 "undefined",它使应用程序崩溃!如您所见... ns_onclick 函数的代码是乱七八糟,JS真的不是我的领域。有没有人在混合应用程序中使用过 Comscore 分析?如果是这样,在网站或应用程序上使用它有什么区别吗?
我终于明白了!问题出在 Comscore 提供的 JS 代码上,它位于 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>
如您所见,我将 < button > 标签更改为 < a > 标签,并添加了 href 属性 到它。必须将 href 设置为 html 标签,这只能通过 link 标签来完成.我试图将 href 添加到按钮,只是为了试一试,但它不起作用......我不知道这是因为它只适用于 < a > 或任何其他原因...正如我在问题上所说,这实际上不是我的领域。
希望对遇到同样问题的你有所帮助