0

から起動されるレガシーアプリケーションがありますHTA。私は最初から始めて、file://すぐにユーザーをWebURLにリダイレクトしますlocation.href="http://server/path"

ナビゲーションが成功したかどうかを検出する方法(または成功したかどうかを検出する方法)はあります

アイデア:

  • XHRURLに移動して、URLに移動する前にHTTP応答コードを取得します。(サイトが同一ではないため、アクセス許可の問題:file://-> http://)
  • SCRIPTurlの既知のパスへの要素。
  • のURLにアクセスしFRAMEます。次に、結果ページまたはから成功したら、親をリロードしますHTA

ノート:

URLは、アプリサーバーでホストされる動的ページ(サーブレット)になります。静的コンテンツ(画像など)は別の方法でホストされます。画像を確認しても、実際のURLが機能することは保証されません。この違いを反映した回答をお願いします。(ありがとう!)

4

3 に答える 3

0

onloadサーバーから画像をロードし、イベントをリッスンしonerrorます。画像は1ピクセルの透明なgifにすることができます。

<img src="http://server/transparent.gif" onload="setServerAvailable(true);" onerror="setServerAvailable(false);" />

編集:ページをiframeに読み込むことができます。JavaScriptを使用してページの状態を監視できます。HTAを使用する場合、同一生成元ポリシーについて心配する必要はありません。このコードをHTAとして保存し、HTAをロードして、ボタンをクリックします。別のドメインにある場合でも、フレームコンテンツを変更できることがわかります。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>Test Same Origin Policy in HTA</title>
        <script type="text/javascript">
            function modifyFrame()
            {
                var fr = document.body.getElementsByTagName("iframe")[0];
                fr.contentWindow.document.body.innerHTML = 
                    "Cross domain scripting works in HTA";
            }
        </script>
    </head>
    <body>
        <iframe src = "http://stackoverflow.com/questions/7940913/"></iframe>
        <br /><br />
        <button onclick="modifyFrame()">Modify cross-domain frame content</button>
    </body>
</html>
于 2011-10-29T18:54:22.070 に答える
0

ターゲットWebページにアクセスできる場合は、Webページのping(onload)を呼び出し元サーバーに配置して、正常なロードを登録します。

選択したテクノロジによっては、Webページからのpingは、サーバー上のWebサービスへの単純な呼び出しであり、中央リポジトリ(データベースなど)に正常にロードされたことを登録します。HTAは、データベースのロードステータスを定期的にチェックし、それに応じて動作する可能性があります。

要約すると、必要なものは次のとおりです。

  1. ページリクエストの「ロードステータス」を登録するWebサービス。中央データベースにロードステータスを保存します
  2. 読み込み中のWebページで、ページが完全に読み込まれた後、このWebサービスを呼び出します。エラーの場合は、同様にステータスを設定します。
  3. HTAで、読み込みステータスをチェック(および表示)するタイマーを作成します。そして、最終的な状態に応じて行動します。
于 2011-10-29T19:06:59.320 に答える
0

CALLINGページは、ナビゲーションが成功するか失敗するかを直接知ることはできません。さまざまな方法を使用して、発生する可能性を高めることができますが、最終的には成功する場合と成功しない場合があります。

于 2011-10-29T22:43:51.913 に答える