8

クエリパラメータがページに渡されている基本的な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でページを呼び出しています

私はjavascriptソリューションを書かなくてもhtmlのクエリパラメータにアクセスする方法を探していましたが、運がありませんでした。js関数を追加することは、1行のアプローチがあれば回避すると思っただけで、それほど大きな問題にはならないと確信しています。

助けてくれてありがとう。

4

1 に答える 1

10

これは、純粋な HTML では実行できません。

これは、JavaScript を使用して次の 2 つの方法で実行できます。

<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 を使用してパラメーターを入力することです ( 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>​&lt;/body>

いずれの場合も、クエリ文字列はlocation.searchプロパティから読み取られ、単純な正規表現を使用して解析されます。

于 2012-04-06T12:57:15.737 に答える