2016/02/22

おのれ・・・

・・・また HTMLとJavaScriptに呪われて一日浪費した(# -д-)


■ 具体的には
ifarmeオブジェクト内のみ更新(F5キー操作と同じSuperReload)したかっただけ。
しかし、HTML側からは そうした機能は提供されていない。

そもそも ifarmeタグ は 本来廃止される予定だったモノだ、因って 至極仕方のナイ話としか云いようもナイのだが、
ナゼか最新のHTML5では ひっそりとは云え現場に返り咲いているので、使う機会も増えるハズだ。
■ iframe内の操作は
FireFox系ならブラウザの対象フレーム内でマウスを右クリックのコンテキストメニュー [このフレーム]項目に収まっていて、
その中の [フレームの再読み込み] を 実行すれば、そのフレームの内容だけが更新(再描画)される。

それを、サイトの意匠としてレイアウトしたボタンやリンクで実行したい。
ただ それだけのハナシだと考えて貰うと判り易いだろう。
■ で、巷のTipsでは
JavaScript で location.reload(true); を使え と云うトコばかり。
確かに動いてくれれば別にソレで構わないのだが、コレが全く機能しない始末・・・

大前提として 対象のiframeオブジェクトに任意のIDを振り、getElementById を用いた
document.getElementById('Indexframe').contentWindow.location.reload(true);
▲ コレらでは、iframeオブジェクト内で呼び出している外部サイトを再描画させる事が出来ない。 この記述でも自分のサイトのある、自分のサーバ領域のページを表示させている場合は有効ではあるのも事実だが、 iframeを用いた演出の場合、別機材(サーバ)にある別ページを表示するケースが大多数だろう。 その場合にこの記述では全く役に立たなかった・・・ そして 多くのTipsサイトにも当然
仕様として iframeオブジェクト内に呼び出した "外部コンテンツ" には 更新系処理が作用しない。
このように注釈されている。 しかしナゼか 適切な対策は掲載されていない。 そうした中、.reloadの代替案の1つとして、JavaScriptで iframeオブジェクト内を消去/書き込みする処理を 関数化した少し凝ったモノがあり、その紹介ログのコメント投稿から 利用実績もあるようようだったの飛びついたのだが、 残念ながらその仕組みでも、その他の aタグや spanタグでの直接記述群と同様 全く動作しなかった・・・ 仕方が無いので、昨日半日使って 簡易な方法を模索した次第。
★ その結果・・・