ように、私は、Mozilla PDF.jsを使用してiframeをPDFファイルでサイトを持っている:私はページを追跡するためにGoogleからのanalytics.jsを使用していますGoogleアナリティクスイベント
<iframe class="maxit" src="web/viewer.html?file=MaxIT.pdf#zoom=page-fit" frameborder="0">
<embed class="maxit" src="web/viewer.html?file=MaxIT.pdf" type="">
</iframe>
そして、次のようになります。
<script>
(function(i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXX-XX', 'auto');
ga('send', 'pageview');
</script>
すべては、ページ上の標準イベントトラッキングであっても、意図どおりに機能します。 私の問題は、pdfのリンクをクリックするとイベントを追跡することができないということです。例えば、私は、私が追跡したいと思うpdfの中にいくつかのog mailtoリンクを持っています。次のスクリプトを使用してイベントをGAに送信していますが、スクリプトとanalytics.jsをweb/viewer.htmlページに直接配置しても何も起こりません。これは、私が使用しているスクリプトです:
<script type="text/javascript">
$("a").each(function() {
var href = $(this).attr("href");
var target = $(this).attr("target");
var text = $(this).text();
$(this).click(function(event) { // when someone clicks these links
event.preventDefault(); // don't open the link yet
if (href.indexOf("mailto") !== -1) {
ga('send', 'event', {
'eventCategory': "mailto link",
'eventAction': "clicked",
'eventLabel': href,
'transport': 'beacon'
}); // create a custom event
console.log("mailto clicked");
}
setTimeout(function() { // now wait 300 milliseconds...
window.parent.open(href, (!target ? "_self" : target)); // ...and open the link as usual
}, 300);
});
});
</script>
上記のスクリプトはpdfのリンクではうまく動作しません。
PDF.jsはリンクを動的に作成するので、ページがレンダリングされアノテーションレイヤーが作成されるたびにスクリプトを実行する必要があることに注意してください。または、単一のdocument.addEventListener( 'click'、handler、true)を使用してjQueryを使用してクリックイベントをリッスンしないでください。 – async5
もちろん、これはうまくいきました。あなたの答えをありがとう。 – StefanL