私はなぜこの方法を不思議に思っています:
window.location.hash = JSON.stringify($("body")[0]);
ある種の jquery-id をハッシュに追加します。次のようになります。
foo.htm#{"jQuery18305139440292647334":13}
この「id」とは何ですか (どのように呼ばれますか?)、この id から DOM 要素に戻る方法はありますか? ページのリロード後、この ID は一貫していますか?
私はなぜこの方法を不思議に思っています:
window.location.hash = JSON.stringify($("body")[0]);
ある種の jquery-id をハッシュに追加します。次のようになります。
foo.htm#{"jQuery18305139440292647334":13}
この「id」とは何ですか (どのように呼ばれますか?)、この id から DOM 要素に戻る方法はありますか? ページのリロード後、この ID は一貫していますか?
あなたの問題は、JSON.stringify()
DOM 要素やその他の循環構造 (jQuery オブジェクトなど) をシリアル化するのに実際には適していないことです。
それとは別にJSON.stringify()
、ブラウザ固有の機能があります。クロムで同じことをしようとすると、出力が得られないため、明らかにコードをFirefoxでテストしました。
ここで役立つ情報がいくつかあります:循環参照がある場合でも、DOM ノードを JSON にシリアル化する方法は?
なぜ乱数を取得するのかという質問については、私に言わせれば、それはFirefoxのフード内の魔法にすぎません. 要点は、あなたがやろうとしていることはサポートも文書化もされておらず、おそらく常に予期しない結果になるということです。
また、何をしようとしているのかはわかりませんが、URL のハッシュタグから特定の DOM 要素を参照する予定がある場合は、jQuery セレクターを追加することを検討してください。
window.location.hash = encodeURIComponent('body:first');
// wil result in URL like: http://foo.htm#body%3Afirst
ページがハッシュとともにロードされた後、次のように要素を取得できます。
var myjQueryObject = $(window.location.hash);