Estoy trabajando en un proyecto en el que he vinculado muchos archivos pdf en la página maestra. Al hacer clic en el ancla, la página redirige a la página especificada y muestra el pdf en iframe. Ahora quiero que el texto en la etiqueta de anclaje se muestre en la página donde se abre pdf Considere que tengo un ancla que se ve así:

<a href="<%= ResolveUrl("~") %>Main_Content.aspx?open=Departments/HR/NewsLetter/newsletter_dec_2014.pdf">News Letter</a>

Ahora quiero que el texto "Carta de noticias" se muestre en la página redirigida. Creo que podría hacerlo guardando el texto en la variable de sesión. Pero, ¿cómo puedo guardar el texto de anclaje en la variable de sesión sin especificar ningún ID o clase en la etiqueta de anclaje? ¿Alguien puede ayudarme por favor?

3
Alina Anjum 10 may. 2016 a las 07:43

3 respuestas

La mejor respuesta

Puedes probar esto

$("a").click(function (e) {
if($(this).attr("href").match(".pdf$"))
{
    window.location.href = $(this).attr("href") + "&title=" + $(this).text();
    e.preventDefault();
}
});

En el lado del servidor en "Main_Content.aspx"

strTitle = Request.QueryString["title"];
2
Sushmit Patil 10 may. 2016 a las 05:08

Probablemente esté buscando QueryString en lugar de sesión, ya está pasando la ruta en QueryString, también pasa el texto de anclaje. Debe agregar esto a la URL mientras crea la etiqueta de anclaje.

<a href="<%= ResolveUrl("~") %>Main_Content.aspx?open=Departments/HR/NewsLetter/newsletter_dec_2014.pdf&aText=News Letter">News Letter</a>

En el lado del servidor

lblForAnchor.Text = Request.QueryString["aText"].ToString();

Editar no puede cambiar la cadena de consulta cuando se crea, luego puede cambiarla cuando se carga en DOM en document.ready. Asigna una clase a tus anclas para ser específico.

$( 'a.someclass' ).attr( 'href', function(index, value) {
  return value + '&aText=' + $(this).text();
});

Otra forma de hacer esto al hacer clic en el ancla.

$( 'a.someclass' ),click(function(event) {
    window.location.href = this.href +  '&aText=' + $(this).text();
});
3
Adil 10 may. 2016 a las 05:05

Puede escribir el contenido dinámicamente con javascript:

<a href="<%= ResolveUrl("~") %Main_Content.aspx?open=Departments/HR/NewsLetter/newsletter_dec_2014.pdf">News Letter</a>

Javascript:

<script language="javascript">
function openWin(t,u) {
docstring='<iframe src='+u+'></iframe>';
win = window.open();
newdoc=win.document;
newdoc.writeln(t);
newdoc.write(docstring);
newdoc.close();
}

var elements = document.getElementsByTagName('a');
for(var i = 0, len = elements.length; i < len; i++) {
elements[i].onclick = function () {

var theAnchor = elements[i].innerHTML;
var theHref = elements[i].href;    

 if(theHref.match(/\.pdf/)){
  openWin(theAnchor,theHref);
 }
}
</script>

O llame a una dirección diferente con URL y pruebe como parámetros y genere el documento en el lado del servidor.

No estoy seguro de cómo se comportará esto con el clic en el enlace, pero podría valer la pena intentarlo.

Los enlaces no deberían tener que modificarse.

1
Bryan 10 may. 2016 a las 05:17