2012-04-06 44 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