0

フレーム付きの HTA を使用しています。左側のフレームはメイン フレームを制御し、その中にページを表示します (ナビゲーション パネルのように)。たとえば、左側の「google」リンクを押すと、メイン ウィンドウで開きます。(これは HTA の主要な目的ではありませんが、説明のために簡略化しています)

問題は、バグ レポートのある Web ページを開こうとしたときです。HTA はページのバグについて通知し続け、ページが正しく機能しないことさえあります。(バグ レポートは私が作成したページに関するものではありません!) 同じページが IE で完全に動作します。

タイトルにあるように、私または HTA のユーザーはシステムの管理者権限を持っていないことに注意してください。

私は長い間それをグーグルで検索しましたが、解決策が見つかりませんでした。問題に対する役立つヒントや解決策があれば本当に感謝しています.

ありがとう、ロテム

4

1 に答える 1

1

この問題を回避するには、いくつかのオプションがあります。最適なオプションは、Internet Explorer で [スクリプト エラーごとに通知を表示する] 設定を無効にすることです。HTA を実行しているため、HKEY_CURRENT_USER レジストリ設定をプログラムで変更できます (または、手動で 1 回変更するだけです)。

2 番目のアプローチは間違いなくハックですが、IE がタブ ブラウジングを行う前に HTA でタブ ブラウザーを作成したときに、自分で問題を解決した方法です。iframe 内の URL に移動する代わりに、AJAX でコンテンツをリクエストし、window.onerror を選択した関数に設定するスクリプト ブロックを追加します。次に、コンテンツ全体を iframe に挿入します。このアプローチはエラーを飲み込み、必要に応じてエラーを報告するオプションを提供します.

onerror スクリプトを挿入するだけでなく、後続のクリックが ajax インジェクション ハンドラーを介してルーティングされるように、アンカーの事前解析も行う必要があります。基本的に独自のブラウザーを作成し始めるため、これはかなり複雑であることがわかりました。私はまだプロジェクトのソース コードを持っているので、それを bitbucket リポジトリに公開し、私のアプローチを調べてもらいます。

それ以外の場合、最後のオプションは、各サイトの管理者に電子メールを送信し、極度のバグを修正するように指示することです!!!! しかし、そのオプションがうまくいくとは思えません:D

編集:

古いプロジェクトをロードした後、ソリューションが以前よりも実行可能性が低いことがわかりました。x-frame-options ヘッダー ディレクティブは、IE8 以降、google.com が iframe に読み込まれないようにします。そして、なんらかの理由で、window.onerror トラップが iframe のエラーをキャッチしていません (実際にはネストされた iframe の問題である可能性がありますが、実行可能な解決策はありません。)

しかし、エラーダイアログの「今後このメッセージを表示しない」オプションをチェックするオプションがまだありました。これにより、エラー ダイアログが問題の報告を停止し、管理者権限は必要ありませんでした。

于 2012-05-17T21:33:16.673 に答える