- ベストアンサー
外部ファイルJS参照を全て消さないと「文字が正しくありません」エラー
実に不思議なのですが、 以下のように4つのJSファイルをインクルードしているHTMLファイルを ローカルで開くと「文字が正しくありません」とスクリプトエラーが何回かでます。 ですが、script1~4.js の行を全てコメントアウトすると、エラーはでません。 1~4のどれかにエラーが含まれているのかと、一つ一つを外してみましたが、 どの行を外しても、やはり「文字が正しくありません」と出てしまいます。 ローカルの然るべきパスに1~4はあります。また、HTML同様、JSもEUCになってます。 何が原因なのでしょうか? <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>タイトル</title> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <meta http-equiv="content-script-type" content="text/javascript"> <meta http-equiv="content-style-type" content="text/css"> <link href="../css/style.css" rel="stylesheet"> <script src="../js/script1.js" type="text/javascript"></script> <script src="../js/script2.js" type="text/javascript"></script> <script src="../js/script3.js" type="text/javascript"></script> <script src="../js/script4.js" type="text/javascript"></script> </head>
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4 の者ですが、あの~本当にディレクトリ構成には問題なかったのですか??? >(1) スクリプトエラーになる >C:\Documents and Settings\user_name\デスクトップ\index.htm とおき、 >C:\Documents and Settings\user_name\デスクトップ\js\ に、script1~4.js をおく。 この構成の場合、 <script src="./js/script1.js" type="text/javascript"></script> と、”./~” 同じディレクトリという指定でピリオドは2つでなく1つです。 ピリオドが2つという事は1つ上の階層という事で、 C:\Documents and Settings\user_name\js\ に、script1~4.js をおく必要があります。 #4 で示した b1 の件でひっかかっています。 尚、 >(2) スクリプトエラーにならない >C:\Documents and Settings\user_name\デスクトップ\NewFolder\index.htm とおき、 >C:\Documents and Settings\user_name\デスクトップ\NewFolder\js\ に、script1~4.js をおく。 は、HTMLで C:\Documents and Settings\user_name\デスクトップ\js\ に、script1~4.js をおく事を要求していて、 (1) の検証環境が残っているとそれを見に行っていますが。 逆に(1) の検証環境がなければこれもエラーです。 (3) はたぶん上位の階層がないのでブラウザが補正して同じ階層のフォルダを見に行っているのでしょう。
その他の回答 (4)
- koutarou504
- ベストアンサー率44% (182/407)
情報が少ないので調べ方を。 まず ><script src="../js/script1.js" type="text/javascript"></script> この記述先に本当にファイルがあるのか? <a href="../js/script1.js">script1</a>として ダイアログボックスなりそのファイルが表示されるなり それなりに動作するでしょうか? (確認環境により動作は異なるので、「ページを表示できません。」とならなければ存在は確認できます。 ついでにダウンロードなりなんなりすれば、目的のファイルであるかどうかも確認できます。) で、ここで然るべき処にあるつもりなのにないとなる可能性は、 a.基準となる場所が違う。 a1.通常はその閲覧しているHTMLファイルのある場所である。 a2.<base href=~> を指定した場合は、その指定した内容が基準となる。 b.示したい場所と指定が違う。 b1."../js/script1.js" は相対アドレスで基準となるフォルダ(場所)の1つ上に js というフォルダ(場所)がある。という指定ですが・・・。 HTMLファイルがあるその場所に js ファルダがあるなら ..ふたつでなく .ひとつ。 c.フォルダ名,ファイル名が違う。 c1.全角半角が違ったり、小文字のi(アイ)が抜けてたり(小さいので見落としやすい)、小文字のl(エル)と数字の1(イチ)を間違えたりなど・・・。 ファイル名の違いの検査はHTMLファイルと同じ場所にコピーするなり持ってきて、 <a href="./script1.js">script1</a>として検証。 これでOKでフォルダ付きでNGならフォルダ名に疑いが・・・。 リンクで問題なかった場合はファイル内の記述ですが、 漢字などがコメントを含めて使われていないかがまず 疑いのポイントになりますが、 (文字化けなどで、コメントがコメントとして扱われていないとかコメントの終わりが終わりとして見られず必要以上にコメント化されているとか) ただ、この場合は「文字が正しくありません」でなく他のスクリプトエラーと思われ・・・。 あとそれ以上は、再現するJSファイルの内容を提示して頂けないと・・・。 (再現さえすれば、まったくの別物でも良いかと。)
お礼
koutarou504さん、詳細なレスありがとうございます。 また、御礼遅くなってすみません。 >情報が少ないので調べ方を。 #1さんにお返事したように、問題を切り分けていくと JSファイルの中身には依存していないような印象を持っています。 その他、ファイルの有無など、ディレクトリ構成には問題ありませんでした。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
script1.jsの中身を補足で挙げていただくわけにはいかないですか
お礼
BLUEPIXYさん、いつもご教示ありがとうございます。 御礼遅くなってすみません。 #1さんにお返事したように、問題を切り分けていくと JSファイルの中身には依存していないような印象を持っています。 JSファイルを公開するのはまったく問題ないですが。。。
- flowermaze
- ベストアンサー率56% (159/282)
ソースを見るかぎり、htmlファイルはeuc-jpで記述されているようですが、jsファイルの文字コードはどうなっていますか? eucのページからshift_jisのjsファイルを呼び出すと、IEではスクリプトエラーになります。 回避方法は、<script>タグ内に carset="shift_jis"と入れます。
お礼
御礼遅くなってすみません。 レスありがとうございます。 質問にも書きましたが、JSもHTMLも、EUC-JPに統一されています。 以前もハマったことがありまして(コメント部分が文字化けして悪さしていた)。 回避方法(carset="shift_jis)の方は知りませんでした。 大変参考になりました。 原因については、#1さんのものが怪しいですが、はっきりしません。
- Kuppycat
- ベストアンサー率50% (109/216)
的外れだったらごめんなさい。 .jsファイルのパスに漢字は混ざってませんか? スペースの入ったフォルダ名は混ざってませんか? それが悪さをしているかも。 確認してみてください。
お礼
御礼/報告遅くなってすみません。 どうもご教示のことがビンゴくさいのですが、 いまいち判然としません。 (1) スクリプトエラーになる C:\Documents and Settings\user_name\デスクトップ\index.htm とおき、 C:\Documents and Settings\user_name\デスクトップ\js\ に、script1~4.js をおく。 (2) スクリプトエラーにならない C:\Documents and Settings\user_name\デスクトップ\NewFolder\index.htm とおき、 C:\Documents and Settings\user_name\デスクトップ\NewFolder\js\ に、script1~4.js をおく。 (3) スクリプトエラーにならない C:\index.htm とおき、 C:\js\ に、script1~4.js をおく。
お礼
すみません、御礼遅くなりました。 あれから手付かずでいたのですが、 今日試したらなぜかでなくなりました。 ご教示のような、ディレクトリ構成の問題 だったのかもしれません。 ともかく、いろいろご示唆いただいた点は 今後のトラブルシューティングでも参考にさせていただきます。 ありがとうございました。