WebServer機能で他のページからHome(Top)にうまく戻らない

最終更新日 2022年12月23日

STM32miniShieldを利用したオブジェクトにWebServerの機能を使っています。HomeURLにアクセスするとメニューを表示し、クリックした先に機能ページがあるわけです。
この仕組みはマイコン側の初期値をEEPROMの登録しており、この初期値を変更する術を実現すべく、[submit]ボタンを押して引数をマイコン側に転送し、EEPROMのパラメータ内容を更新登録して、マイコンを再起動し変更内容を反映させています。

登録/設定ページ以外に状態モニタのためのページも用意されています。

ここで問題があります。ページ切替をどうするかです。URLバーに直接TOPページのURLを入力すれば問題無く切り替えが可能です。登録/設定ページを開いて状態確認したら温度グラフ表示に移行したいときに直接URLの書込はちょっと困難なのです。リンク先を隠匿しているからです。そこでTOPページへ移行するボタンを各ページに用意すべきだと思いました。

ボタンの方がかっこいいのですが、HTMLではフォームボタンは送信(submit)とリセット(reset)の二種類しか用意されていません。そこでスクリプトを使って、

<SCRIPT>
		function HP(w1){parent.window.open(w1,'_top')}
</SCRIPT>

・・・・・・
<input type="button" value="RETURN" onclick="HP('URL')">

で実現出来ると思ったのですが、うまくゆきません。2回ボタンを押すことで実現出来るのですが、1回目ではリロード相当の動きなのです。

単純なリンクならうまくゆくのかと以下のような記述に変更してみたのですが、結果は効果無しで、2回目で期待通りの結果となります。

<A HREF="URL">[Home]</A>

結局はサーバ側の仕組みに問題があることになります。

結局の所、解決策は新たなパラメータを用意して、そのパラメータを[RETUEN]ボタンに割り当てるということで解決しました。

STM32ではファイルシステムを用意するのはフラッシュサイズが小さくて難しいです。ESP32ならファイルシステムを搭載できるのですが、、
そこで引数を用意して新しいページのHTMLを都度構築しています。

  • setup1:登録ページ
  • setup2:1日の毎時温度グラフ表示
  • setup3:グラフ用のユーティリティコード
  • setup4:1時間の毎分温度グラフ表示
  • setup9:TOPページ
  • <SCRIPT>
    		function HP(w1){parent.window.open(w1,'_top')}
    </SCRIPT>
    
    ・・・・・・
    <input type="button" value="RETURN" onclick="HP('URL/setup9')">

    ユーザが意識しなくても良い部分が確立できたかなと思います。ただ、ブラウザのURLに/setup9という表示が為されてしまい、気になる方にとっては問題がありそうです。


    戯言(nonsense)に戻る


    問い合わせ頁の表示


    免責事項

    本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
    あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

    本ソフトウエアの著作権はToolsBoxに帰属します。
    本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
    ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
    ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
    ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。

    商標・登録商標

    Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
    Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
    LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
    I2Cは、NXP Semiconductors社の登録商標です。
    その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
    すべての商標および登録商標は、それぞれの所有者に帰属します。