Ignorar una cadena de consulta después de una extensión de archivo jQuery
Frecuentes
Visto 348 veces
0
Estoy usando un script que se encuentra aquí: http://www.blastam.com/blog/index.php/2011/04/how-to-track-downloads-in-google-analytics/ para agregar dinámicamente un código de seguimiento de Google Analytic a los enlaces que apuntan a documentos PDF.
Lo implementé y me di cuenta de que todos los documentos PDF en este sitio tienen una cadena de consulta adjunta al final de la URL. Desafortunadamente, este script no reconoce los documentos como PDF debido a las cadenas de consulta. Necesito modificar este script para ignorar la cadena de consulta después de la extensión de archivo .pdf, pero tengo problemas para hacerlo. A continuación se muestra el script que he modificado ligeramente:
var filetypes = /\.(pdf?)$/i;
var baseHref = '';
if (jQuery('base').attr('href') != undefined)
baseHref = jQuery('base').attr('href');
jQuery('a').each(function() {
var href = jQuery(this).attr('href');
if (href && (href.match(/^https?\:/i)) && (!href.match(document.domain))) {
jQuery(this).click(function() {
var extLink = href.replace(/^https?\:\/\//i, '');
_gaq.push(['_trackEvent', 'External', 'Click', extLink]);
if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
setTimeout(function() { location.href = href; }, 200);
return false;
}
});
}
else if (href && href.match(filetypes)) {
jQuery(this).click(function() {
var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
var filePath = href;
_gaq.push(['_trackEvent', 'Download', 'Click-' + extension, filePath]);
if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
setTimeout(function() { location.href = baseHref + href; }, 200);
return false;
}
});
}
});
¿Cuál sería la mejor manera de analizar la URL y detenerse después de encontrar la .pdf
¿extensión?
1 Respuestas
0
Para eliminar la cadena de consulta antes de buscar la extensión del archivo, puede cambiar esto:
var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
var filePath = href;
a esto:
var fname = href;
var query = href.indexOf("?");
if (query !== -1) {
fname = href.substr(0, query);
}
var extension = (/[.]/.exec(fname)) ? /[^.]+$/.exec(fname) : undefined;
var filePath = fname;
Demostración de trabajo: http://jsfiddle.net/jfriend00/JV78r/
respondido 27 nov., 13:18
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery pdf google-analytics or haz tu propia pregunta.
Gracias por su respuesta, todavía tengo algunos problemas para inyectar el código de seguimiento en el
<a>
aunque elemento. Intentando algunas cosas diferentes con su respuesta, informaré con mis hallazgos. - ty baileyConseguí que esto funcionara cambiando
if (href && href.match(filetypes))
aif (fname && fname.match(filetypes))
en base a su respuesta. ¡Gracias! - ty bailey