我有一个基本的html页面,它将查询参数传递给页面。我以为我能用Request.QueryString获取值,但我正在做的阅读越多,这似乎只适用于asp应用程序。我的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调用页面?path = scan.pdf
我一直在寻找一种方法来访问html中的查询参数,而无需编写javascript解决方案,但没有任何运气。我确定添加一个js函数不会太大,只是认为如果有单行方法我会避免它。
感谢您的帮助。
答案 0 :(得分:8)
这不能用纯HTML来完成。
这可以通过两种方式完成,使用JavaScript:
<body><script>
var param = /[&?]path=([^&]+)/.exec(location.search);
param = param ? param[1].replace(/"/g, '"') : '';
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
属性中读取查询字符串,并使用简单的正则表达式进行解析。