0

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は「未定義」であり、アプリがクラッシュします!ご覧のとおり... ns_onclick関数のコードは混乱しており、JSは実際には私の分野ではありません. ハイブリッド アプリで Comscore アナリティクスを使用したことのある人はいますか? もしそうなら、ウェブサイトとアプリでの使用に違いはありますか?

4

1 に答える 1

2

やっと手に入れた!問題は 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プロパティを追加しました。hrefhtmlタグに設定することは必須であり、これは link タグを介してのみ行うことができます。試しにhrefをボタンに追加しようとしましたが、機能しません... < a >またはその他の理由でのみ機能するためかわかりません...質問で言った、これは実際には私の分野ではありません。

同じ問題に直面している場合に役立つことを願っています。

于 2015-10-23T10:53:27.343 に答える