Web サイト内のページからページへ単純な英数字の文字列を渡すことができるようにするために、しばらくの間 onclick イベント ハンドラーを使用してきました。
HTML リンクの例は次のとおりです。
<a href="dir/newapge.html" onclick="idemo('dir/newpage.html'); return false;">
onclick が false を返すと、ブラウザは href... を無視します。これは、検索エンジンが見つけるために存在します。
私の idemo 関数は、次のようにクエリ文字列として id を URL に追加するだけです。
function idemo(whereto)
{
location.href = whereto + "?" + escape(my_id_is);
}
変数 my_id_is が宣言されており、これより前に「myId」などの単純な英数字の文字列に設定されています。これは Web ページに表示され、alert() のデバッグ呼び出しにより、idemo() が呼び出されたときに my_id_is が予期された文字列を正しく保持していることが確認されました。
私の問題は、IE8 では、ID を新しいページに渡すこの非常に単純な方法が常に機能するとは限らないことです。正しい検索文字列を使用して正しい URL を構築する idemo の呼び出しにもかかわらず、IE8 で表示されるページに検索文字列が含まれないことがあります。まるでアンカー タグの href 値を使用するように戻ったかのようです。
したがって、たとえば、ページ「dir/newpage.html?myId」を表示する代わりに、単に「dir/newpage.html」を表示するだけです... 疑問符の文字がないことに注意してください。
私のコードは以前のバージョンの IE で動作し (私は信じています)、Firefox で動作します。
私の質問は要約すると... location.href をアンカー タグの onclick イベント ハンドラ内からのクエリ文字列を含む URL に設定することにより、Web ページ間でデータを渡すことは問題ありませんか? もしそうなら、その理由を考えてもらえますか? IE8には問題がありますか?