2012-04-06 14 views
6

Ho una pagina HTML di base che sta passando un parametro di query alla pagina. Pensavo di essere in grado di ottenere il valore con Request.QueryString ma maggiore è la lettura che sto facendo sembra che questo sia solo per le applicazioni asp. Il mio html è il seguente sottoAccesso alla stringa di query/parametro dalla pagina html

<body> 
    <object type="application/pdf" width="100%" height="100%"> 
     <!--This didn't work--> 
     <param name="src" value="<%=Request.QueryString["path"]%>" /> 
     <!--Neither did this--> 
     <!--<param name="src" value="<%=Request.Params["path"]%>" />--> 
     <!--When it is hardcoded then my page is displaying the pdf as expected.--> 
     <!--<param name="src" value="scan.pdf" />--> 
    </object> 
</body> 

sto chiamando la pagina con displayPdf.htm? Path = Scan.pdf

Sono stato alla ricerca di un modo per accedere parametri di query in formato HTML senza dover scrivere una soluzione javascript ma non ha avuto fortuna. Sono sicuro che l'aggiunta di una funzione js non sarebbe un affare troppo grande, ho pensato di evitarlo se ci fosse un approccio a linea singola.

Grazie per l'aiuto.

risposta

8

Questo non può essere fatto in puro HTML.

questo può essere fatto in due modi, utilizzando JavaScript:

<body><script> 
var param = /[&?]path=([^&]+)/.exec(location.search); 
param = param ? param[1].replace(/"/g, '&quot;') : ''; 
document.write('<object type="application/pdf" width="100%" height="100%">\n' + 
    '<param name="src" value="' + param + '" />\n</object>'); 
</script></body> 

Un metodo alternativo è popolando il parametro usando DOM (demo: http://jsfiddle.net/N2GUf/2/):

<body><object type="application/pdf" width="100%" height="100%"> 
    <param name="src" value="" id="param-path" /> 
</object> 
<script> 
var param = /[&?]path=([^&]+)/.exec(location.search); 
if (param) 
    document.getElementById('param-path').value = param[1]; 
</script>​</body> 

In entrambi i casi, la stringa di query viene letta dalla proprietà location.search e analizzata utilizzando un'espressione regolare semplice.

+0

Il secondo stile funziona quasi per me, ma il blocco javascript viene chiamato prima dell'esistenza dell'oggetto. Se potessi chiamarlo dopo, allora questa soluzione funzionerebbe sicuramente per me. Tuttavia, per prima cosa ha funzionato senza modifiche. Molte grazie. –

Problemi correlati