- 締切済み
iframeクッキー あと少しで
またしても立ててしまいました。 自分の力ではどうしようも出来ないので、立てたことお許しください。 index.htmlのiframeに最初に表示されているページ a.html index.htmlの<a>タグリンクでiframe内に表示するページの内、 クッキーによって、更新おしてもiframe内を変えないページ b.html・c.html クッキーを解除し、更新を押すと、a.htmlを表示するページ d.html・e.html 現在、今までの質問で以下のタグでiframeのクッキーを使用しています。 ************************************************************************** index.html ************************************************************************** <head>内 <script language="JavaScript" src="/standard.js"></script> <script><!-- function GetHeightForIndex(){ GetHeight("tmain"); } //--></script> これは、iframeの高さ可変のタグです <body>内 <a href="b.html" onclick="setCook(this.href)">b</a> <a href="c.html" onclick="setCook(this.href)">c</a> <a href="d.html" onclick="setCook('')">d</a> <a href="e.html" onclick="setCook('')">e</a> <script type="text/javascript"><!-- var cook_key = "iframesrc"; if(cook_src) document.getElementById('iframe名').src = 'a.html'; var cook_src; var cookies = document.cookie.split(';'); for(var i=0; i<cookies.length; i++){ if(cookies[i].indexOf(cook_key) >-1){ cook_src = cookies[i].split('='); break; } } var file = cook_src? cook_src[1] : 'a.html'; document.write('<iframe class="tmain" src="',file,'" id="iframeID" name="iframe名" frameborder="0" scrolling="no" height="1500"></iframe>') document.getElementById('tmain').src = cook_src ? (cook_src[1] ? cook_src[1] : 'a.html') : 'a.html'; function setCook(arg){ document.cookie = cook_key + '=' + arg + ';'; } //--></script> <noscript> <iframe class="tmain" src="a.html" id="iframeId" name="iframe名" frameborder="0" scrolling="no" height="1500"></iframe> </noscript> ************************************************************************** standard.js ************************************************************************** //iframe高さ可変 function getIFrameDocument(aID){ if (document.getElementById(aID).contentDocument){ return document.getElementById(aID).contentDocument; } else { return document.frames[aID].document; } } function GetHeight(ID){ if (document.height) { document.getElementById(ID).style.height = getIFrameDocument(ID).height +20 +"px" ; }else{ document.getElementById(ID).style.height = getIFrameDocument(ID).body.scrollHeight +20 +"px"; } } //iframeクッキー var cook_key = "iframesrc"; window.onload = function(){ } function setCook(arg){ document.cookie = cook_key + '=' + arg + ';'; } user_pref("dom.disable_window_open_feature.scrollbars", true); ************************************************************************** この状態で現在、困っているのは a.htmlを表示している状態で更新を押すと、iframe内が404になることです。 b.htmlなどで更新を押すと、b.htmlが表示されたままだし、 d.htmlなどで更新を押すと、a.htmlが表示されます。 解決方法教えてくださいっ。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- arexis
- ベストアンサー率66% (66/99)
こんばんわ。 あれこれ重なってわからなくなってきましたが 私が書いた物も変だったようです。 とりあえず、この質問欄にある物を見ててBODY内のフレーム打ち出し部分ですが、 <script type="text/javascript"><!-- var cook_key = "iframesrc"; var cook_src; var cookies = document.cookie.split(';'); for(var i=0; i<cookies.length; i++){ if(cookies[i].indexOf(cook_key) >-1){ cook_src = cookies[i].split('='); break; } } var file = cook_src ? ( cook_src[1] ? cook_src[1] : "a.html" ) : "a.html"; document.write('<iframe class="tmain" src="',file,'" id="iframeID" name="iframeID" frameborder="0" scrolling="no" height="1500"></iframe>') function setCook(arg){ document.cookie = cook_key + '=' + arg + ';'; } //--></script> <noscript> <iframe class="tmain" src="a.html" id="iframeId" name="iframe名" frameborder="0" scrolling="no" height="1500"></iframe> </noscript> こうすべきかな・・・と思います。 frameのClass名がターゲットになってるのは単なるミスですよね? それから standard.js内に var cook_key = "iframesrc"; と function setCook(arg){ document.cookie = cook_key + '=' + arg + ';'; } は要らない筈です。 あと、404の時にフレームを右クリック、プロパティで、呼ばれているファイル名がわかると思うのですが、それはファイル名になってるのか、ファイル名が無くディレクトリが呼ばれてるのか?はどんな感じですか?
- redfox63
- ベストアンサー率71% (1325/1856)
> var file = cook_src? cook_src[1] : 'a.html' を var file = cook_src ? ( cook_src[1] ? cook_src[1] : "a.html" ) : "a.html"; に修正しても同じでしょうか ・・・
補足
同じでした・・・。 404になるので404ファイルを作ってジャンプさせるようにしました。
- leap_day
- ベストアンサー率60% (338/561)
こんにちは document.getElementByID("") By ID ですので("")内にはid名が入ります <body>内8行目 if(cook_src) document.getElementById('iframe名').src = 'a.html'; →if(cook_src) document.getElementById('iframeID').src = 'a.html'; <body>内16行目 document.getElementById('tmain').src = cook_src ? (cook_src[1] ? cook_src[1] : 'a.html') : 'a.html'; →document.getElementById('iframeID').src = cook_src ? (cook_src[1] ? cook_src[1] : 'a.html') : 'a.html'; あとリンクはiframeページ変更ですよね? <a href="**" target="iframe名" onclick="setCook('**')"> のように target="iframe名" がいるのでは? あとiframe高さ可変のスクリプト standard.js内が ByID なのでGetHeight('iframeID');などのようにしていろいろ確認してみたのですがうまく機能していないようでした(><) 参考にされたところのscriptと見比べてみて再確認してみてください
補足
回答ありがとうございます。 えーっと、IDの方は、こちらの、引用ミスで、 iframeの名前とIDは同じ(tmain)にしているので、あっているんです。 リンクにターゲットは、<base target=tmain>でしています。 高さ可変のほうは質問で書いたタグのままで、動作しています。 クッキーの a.htmlを表示している状態で更新を押すと、iframe内が404になる ことを、直せないでしょうか・・・。
お礼
そのとおりにやってみましたが、 うまく動作されませんでした。 404ファイルでジャンプさせていますので、 もう大丈夫です。 ありがとうございました。