• ベストアンサー

JavaScriptから別フレームのasp出力ドキュメントにアクセスできません。

まず以下のソースをご覧ください。 [index.html] <html> <frameset cols=50%,*> <frame src="frame01.html"> <frame src="frame02.asp"> </frameset> </html> [frame01.html] <html> <head> <script type="text/javascript"> <!-- function insertText(){ parent.frames[1].document.myform.mytext.value = "テスト"; } // --> </script> </head> <body> <form> <input type="button" value="出力" onclick="insertText()"> </form> </body> </html> [frame02.aspにより出力されたソース内の記述] <html> <head> </head> <body> <form name="myform"> <input type="text" name="mytext"> </form> </body> </html> frames[0]のボタンを押すとframes[1]のテキストフォームに"テスト"が出力されるようにしています。 frame02.aspが静的なHTMLだった場合は問題なく動作するのですが、aspによって出力されたhtmlではエラーになってしまいます。 これはフォームに対する操作だけでなく、document.write()等のあらゆる操作に該当します。 当方はaspのことは全くわからず、またこのaspの中身を書き換える権限もありません。あくまで出力された結果に対して動的に操作を加えたいのです。 原因としては次のようなものを考えました。 ・aspドキュメントのパスに対してアクセス権限が無い。 ・aspもしくはCGIの実行によってもたらされたHTMLに対してはスクリプトは動作しない。 ・実際の出力結果のヘッダにはJavaScriptが記述されており、これが何らかの影響を及ぼしている。 ・事前にスクリプトから操作を受けないようにプロテクトされている。 ご助力を願えれば幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.1

上記を確認してみました。 残念ながら普通に動作します。 >・aspドキュメントのパスに対してアクセス権限が無い。 出力結果には関係ない(サーバーで動作するわけではないので) >・aspもしくはCGIの実行によってもたらされたHTMLに対してはスクリプトは動作しない。 もちろん普通に動作します。 >・事前にスクリプトから操作を受けないようにプロテクトされている。 出力結果が質問どおりの場合、これらは考えられません。 ・実際の出力結果のヘッダにはJavaScriptが記述されており、これが何らかの影響を及ぼしている。 実際のaspの出力結果自体に問題があると思われます。 エラーの理由はわからないんでしょうか? おそらく下部のステータスバーにエラーが出ていると思うのですが・・。

gapao
質問者

お礼

ありがとうございました。 ステータスバーのエラーメッセージは「webページでエラーが発生しました」のみだったと思います。 ターゲットフレームやフォーム、エレメント名等も間違っていないはずで、原因が特定できません。 asp単独では問題なく動作するプログラムであり、エラーが出るのは今回作成中のJavaScriptを実行した時のみです。

その他の回答 (2)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

ANo.2です。 「webページでエラーが発生しました」をクリックしてエラーの詳細をダイアログで表示させてみていただけませんか? ちなみに、ASPが吐き出してしまったあとの話ならば、普通のHTMLなので、 クライアントの処理です。 サーバは無関係なので、記述ミス以外には考えられません。

gapao
質問者

お礼

原因が分かりました。 おそらくASPが異なるドメインにあったためだと思います。 JavaScriptは異なるドメイン間の通信はできないのですね。 エラーメッセージは「アクセスが許可されませんでした」でした。 他に良い方法があれば良いのですが…。 この事については新しいトピックを立てて質問させていただこうと思います。 ありがとうございました。

gapao
質問者

補足

エラーをクリックすると詳細が表示されるのですね。知りませんでした。 明日出勤した際に試してみますのでまた助言いただけますでしょうか? よろしくお願いたします。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

どんなエラーになるのか書かれていないので推測ですが、 単純に「ASPでの処理が間に合っていない」ってだけだとおもいますよ。 ASPはサーバ側で動作して、HTMLをクライアントに出力しているわけですが、 ASP動作の結果としてHTMLに出力されるので、普通のHTMLと違ってタイミングが遅れます。 別HTMLからASPでの出力結果に対して変更をしたいと思っても そのHTMLが実施しようとしたタイミングで、ASP側でHTMLの作成が完了していなければ、エラーになります。 タイミングの問題なので、サーバが速いとかlocalhostだとかで、ちゃんと動く可能性もあります。 確実に動作させようとしたら、ASP側から該当JavaScriptを呼ぶようにするしかないんじゃないかな? と思います。

gapao
質問者

お礼

ありがとうございました。 エラーはブラウザのステータスバーに「webページでエラーが発生しました」と出力されるのみで他には何も起こりません。 スクリプトを実行するタイミングはページ全体、つまりフォーム等が完全に描画された後なので問題は無いと思っています。 あくまでも該当ASPの利用者としての立場からユーテリティ的なコードを作成することが目的なので何とか原因を突き止めたいのですが…