- 締切済み
このページのスクリプトでエラーが発生しました
Javaについてよくわからないのですが・・・ <SCRIPT language="JavaScript1.2" src="/../../cgi-bin/counter.cgi?pg=abc"></SCRIPT> というスクリプトがあります。 これはページのhtml文中に埋め込んでcounter.cgiを呼び出して何ページ見られたか、をカウントするためのスクリプトです。 これをIE6.0で見ると問題なくスクリプトエラーもなくみることができます。 しかしホームページビルダー11では毎回、「プレビュー」に切り替えるたびに このページのスクリプトでエラーが発生しました。 ライン2 文字 1 エラー 文字が正しくありません コード 0 このページのスクリプトを実行しつづけますか? というエラーが出てきます。 繰り返しますが、IEでこのページを直接開いた時にはこのようなエラーはでてきません。あくまでビルダーのプレビュー画面を開く度に毎回出てくるのです。ここで質問ですが 1なぜIE単体で見るとエラーはでないのにビルダーのプレビュー(IEを使用しています)ではエラーが出てくるのでしょうか? 2スクリプトを書き換えてみました。 <SCRIPT language="JavaScript1.2"> <!-- src="/../../cgi-bin/counter.cgi?pg=abc"// --> </SCRIPT> もしくは単純に <SCRIPT language="JavaScript1.2"> src="/../../cgi-bin/counter.cgi?pg=abc" </SCRIPT> この二つではエラーはでてきません。しかしカウンターそのものが今度は動作しません。 この場合、カウンターを動かしてなおかつエラーを出さない文にするにはどうしたらよいのでしょうか。 なお、IEのインターネットオプションから「スクリプトエラー」の警告メッセージをうんぬんしてエラーを消す方法、といった回答は求めていません。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- zxcv0000
- ベストアンサー率56% (111/196)
IEとホームページビルダーで同じJavaScriptコードが使えるかどうかは知らないのですが、他にも可能性があります。 「src="/../../cgi-bin/」 はヘンです。 そのケースは普通は「src="/cgi-bin/」と書くのが正解と思います。 状況によっては「src="../../cgi-bin/」かも知れませんが。(状況依存なので、私は正解を知り得ません) 1文字の「/」で始まるURLは、絶対URLからプロトコルやホスト名が省略されたものです。 つまり、現在参照中のWebサーバーのトップディレクトリからのパスですから、「..」でさらに上に上る事はできません。 規格では、トップディレクトリでの「../」は無視する様求められていたと思います。 つまり、ディレクトリ部先頭の「/」は「/../」や「/../../」と等価です。 ホームページビルダーだけうまくいかないとの事ですが、その時のホームページビルダーはIEがアクセスするのと同じサーバーにhttpアクセスするのですか? それとも、ローカルファイルにhttpを使わずにアクセスするのですか? いずれの場合も、最初に書いととおり「/../../」をヘンでないURLにすると解決の可能性があります。
JavaとJava Scriptを、きちんと区別しましょうね。 さて、srcの後の""で囲まれた文字列の 先頭の/を削除してみてください。 不必要です。 尚、貴殿が書き換えた2つのスクリプトは、 全くもって無意味なものです。
補足
すみません。コピーの時に長い相対パスの../を幾つか省略する時に間違ってコピーしてしまいました。 正式には以下でした。 <SCRIPT language="JavaScript1.2" src="../../../../../../../../../cgi-bin/counter.cgi?pg=abc"></SCRIPT> なのできちんとIEでの動作はするのです。 でもこのスクリプト自体はおかしくはないですよね? だったらなぜ、ビルダーのプレビュー画面(IEエンジン使用)ではエラーが出てくるのに同じIEではエラーにならないのでしょう? 私の書いた二つは意味をなさないとのことはわかりました。全くJavaのこと、わかっておりませんでした。
補足
ビルダーとIEと同じスクリプトが使えるのかどうか、という意味ではないです。 ビルダーのプレビュー画面はIEエンジンを使って表示しています。 つまりプレビュー画面といいつつ、その実はIEで表示しているだけです。 ですのでビルダーで書いている時にはエラーは出てこず、それをIEを使って表示する機能(プレビュー機能)の時にスクリプトエラーが出てくる、という意味です。 全く同じIEで表示してるのになんでビルダーだとスクリプトエラーになるの? この下記のスクリプトは間違ってるの? という質問です。 また頭の/については以下に追記しましたが、私が省略した時にミスしたものです。 <SCRIPT language="JavaScript1.2" src="../../../../../../../../../cgi-bin/counter.cgi?pg=abc"></SCRIPT> が長いのですが正解です。 で、なんでこのスクリプトではエラーになってしまうのでしょう?間違っているスクリプトなのでしょうか?