お世話になります
何故表示がされなくなるのか理由が分からないのでお分りになられる方いらっしゃいましたら教えていただきたいのですが・・・
用意したファイルは
┣ test.html ┏ a.html
┗ hoge(フォルダ)╋ b.html
┣ c.html
┣ d.html
┗ e.html
ソースはこちら
<script type="text/javascript"><!--
window.onload=function() {
var SPANS = new Array();
SPANS = document.getElementsByTagName("span");
for(var i=0;i<SPANS.length;i++) {
SPANS[i].onmouseover = function() {
this.style.backgroundColor = "lightcyan";
}
SPANS[i].onmouseout = function() {
this.style.backgroundColor = "";
}
SPANS[i].onclick = function() {
Object(this.innerHTML);
}
}
}
function Object(str) {
h = document.getElementById("Object");
h.innerHTML = "<object data='./hoge/"+str+".html' type='text/html'><\/object>";
}
//--></script>
<style type="text/css"><!--
object {
width:800px;
height:400px;
margin:0px;
}
span {
display:block;
float:left;
width:79px;
height:30px;
text-align:center;
margin:0px;
cursor:pointer;
}
--></style>
</head>
<body>
<div>
<div id="scriptcontents">
<span>a</span>
<span>b</span>
<span>c</span>
<span>d</span>
<span>e</span>
<div style="clear:both;"></div>
</div>
<div id="Object"></div>
<span>をクリックしたら<object>を使用して別のhtmlファイルを表示させてるのですが普通にしていたら表示はされているのですが以下の手順を踏むとOperaで表示されなくなるのですが理由が分かりません(--;)
1).test.htmlを表示(これは5つとも自由に閲覧できます)
2).hogeフォルダ内の5つのファイルを名前を変えたりしてファイルの存在を削除
3).test.html試用(対象ファイルが無いので当然<object>内はNot Foundページになります)
IE,Firefoxは何度押してもNot Foundページが出るのですがOperaは2回目以降反応無しになる(何も表示されない))
4).hogeフォルダ内の5つのファイルを復元
5).test.html試用(IE,Firefoxは元通りになるのですがOperaは何も反応しないまま)
なぜOperaは一度Not Foundページが表示されたら次から無反応になってしまうのでしょうか?
その表示されなくなった名前のファイルはもう2度と使用することはできないのでしょうか?
No.2ベストアンサー
- 回答日時:
>SAYKAさん
ここが原因
>Although the STYLE and SCRIPT elements use CDATA for their data model, for these elements, CDATA must be handled differently by user agents. Markup and entities must be treated as raw text and passed to the application as is.【 The first occurrence of the character sequence "</" (end-tag open delimiter) is treated as terminating the end of the element's content.】 In valid documents, this would be the end tag for the element.
要素が終わってしまうことを防ぐため、です
#Q3422890ではtr要素の終了タグをエスケープし忘れた。
#そもそも外部ファイルに書けばこんな心配は要らないし,DOMを使えばもっと安心。
>leap_dayさん
再現しました。Operaはキャッシュしてしまうのでしょうね。
暫定的に
http://oshiete1.goo.ne.jp/qa3379904.html
#4氏の手段を取ることによって回避できることが確認できましたが,
念のためサーバにCache-Controlヘッダを吐かせるとどうなるか,
検証してないので検証してもらえるとうれしいです。
#ところで関係ない話ですがQ3413770について,
少し補足があるのでプロフィール欄に記述しました
回答ありがとうございます
リンク先の手法のように別ファイルとして開くようにしたら表示できるようになりました(^^)
<meta http-equiv="Cache-Control" content="no-cache">とかのことですかね~?こちらは一応書きこんではいるのですがまだ完全に理解できていないのでよく分からないです(><)
〉プロフィール補足
ありがとうございます
英語なのですぐには読めないですけどじっくり読んでみます
No.1
- 回答日時:
ぱっと見てここ
>h.innerHTML = "<object data='./hoge/"+str+".html' type='text/html'><\/object>";
一旦別の変数に入れてalert出して中身を確認してみるのが良いと思うよ
正しい文字列になっているのかどうかという話。
ところでどうしてobjectの閉じタグの/が\でエスケープされてるの?
回答ありがとうございます
function Object(str) {
i = "<object data='./hoge/"+str+".html' type='text/html'><\/object>";
alert(i);
}
としてみたところアラートの中身は『<object data='./hoge/a.html' type='text/html'></object>』のようになっていてちゃんとなっているみたいです(><)
>ところでどうしてobjectの閉じタグの/が\でエスケープされてるの?
W3Cのチェックにかけると</object>でエラー判定されて<\/object>のようにするとFAQに書かれてあったものですから・・・
間違った解釈しています?(--;)
http://www.htmlhelp.com/tools/validator/problems …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript htmlとcssで分数を表示後、分数の右側に文書を書きたい 1 2022/04/28 10:09
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bodyにidをつける理由は何ですか?
-
bodyにwidth:100%をつける理由は?
-
WEB上で編集できない、スク...
-
ハイパーリンクに下線を表示す...
-
ページによって表示位置がずれ...
-
google mapをiframeで表示させ...
-
<object data="">の挙動について
-
<a href="#" …>の意味を教えて...
-
<div>のタッチ状態を維持したま...
-
Dreamweaver で 外部JSを読み込...
-
window.openで同画面遷移しない
-
別ファイルのfunctionの読み込み方
-
getElementsByNameで要素が取得...
-
プルダウンメニューを別ファイ...
-
ウインドウの後ろに隠れている...
-
子フレームの自動リロードは可...
-
確認ダイアログで「キャンセル...
-
location.reload() について
-
window.openで404エラーがでます
-
新しいウィンドゥを最大化で立...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bodyにidをつける理由は何ですか?
-
テキストボックス内にハイパー...
-
(Javascript)印刷するファイル...
-
ハイパーリンクに下線を表示す...
-
bodyにwidth:100%をつける理由は?
-
WEB上で編集できない、スク...
-
ワンクリックで二箇所に表示さ...
-
スクロールバーのスクロール量...
-
横スクロールを右から左へ・・・
-
テキストをクリックすると答え...
-
bodyタグの範囲について
-
ページの読み込みが完了してか...
-
「overflow: hidden」ペー ジ内...
-
"mailtoでメールの【氏名】【性...
-
外部ページからハッシュタグ(...
-
DOCTYPE宣言をするとstyleが適...
-
mailtoで質問・・・
-
IE以外は色が付かない なぜ?
-
javaScript Nullまたはオブジェ...
-
divで作成したテキストボックス...
おすすめ情報