2

私は現在、ウィンドウを閉じる.aspxページ上の小さな関数を呼び出すだけの.NETページからのJS関数呼び出しを登録しようとしています。

RegisterClientScriptBlockコードは次のようになります。

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>closeBox();</script>");

この種のことは、アプリケーションの他の場所の別のページで機能します。ただし、この場合、ランタイムJSエラーが発生します。エラー:「/」が必要です。デバッグするとき、挿入されたJavaScriptは次のとおりです。

<script type='text/javascript'>closeBox();<

ご覧のとおり、何らかの理由で/script>が追加されていません。私は自分でタグを省略して使用しようとしました:

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "closeBox();", true);

しかし、同じ結果になります。

また、RegisterStartupScriptを試しましたが無駄になりました。

他の誰かがこれに遭遇したことがありますか?それを引き起こしているものとそれを修正する方法についてのアイデアはありますか?

4

3 に答える 3

0

エラーは完全に無関係であることが判明しました。

于 2009-10-29T10:39:06.520 に答える
0

それがまったく同じかどうかはわかりませんが(私の記憶はかつてのものではありませんでした)、過去に同様の問題に遭遇したと思います。解決策は、スクリプトのさまざまな部分の間にいくつかのラインターミネータを配置することでした。

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>\n\rcloseBox();\n\r</script>");
于 2009-09-29T11:13:44.170 に答える
0

このRegisterClientScriptBlockはどこにありましたか?それは<script runat="server">要素の中にありましたか?

その場合、aspxパーサーは、C#文字列リテラル内を囲んでいる要素</script>の終わりと見なし、そこで停止します。シーケンスを(そしてこれは通常のJavaScriptにも当てはまります)中scriptに入れたい場合は、シーケンスを分割するためにそれをエスケープする必要があります。良い方法は次のとおりです。</script><script>

"\x3C/script"
于 2009-09-29T12:08:54.580 に答える