2012-04-06 42 views
6

我有一個基本的html頁面,有一個查詢參數被傳遞給頁面。我以爲我可以通過Request.QueryString獲得價值,但我正在做的閱讀越多,似乎這隻適用於asp應用程序。我的HTML低於從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> 

我打電話的頁面與displayPdf.htm?路徑= scan.pdf

我一直在尋找一種方式來訪問HTML查詢參數,而無需編寫如下一個JavaScript解決方案,但沒有任何運氣。我確定添加一個js函數不會太大,只是以爲如果只有一種方法,我會避免它。

感謝您的幫助。

回答

8

這不能在純HTML中完成。

這可以通過兩種方式來完成,使用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> 

的另一種方法是填充使用DOM的參數(演示: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> 

在任一情況下,查詢字符串將從location.search屬性中讀取,並使用簡單的正則表達式進行分析。

+0

第二種風格幾乎適用於我,但在對象存在之前調用javascript塊。如果我可以在此之後調用它,那麼這個解決方案肯定適用於我。這第一次沒有任何改變,但工作。非常感謝。 – 2012-04-06 13:45:46