- ベストアンサー
フレーム内でしかも、左側の細い部分にあるか判別
そのページがフレーム内でしかも、よくある左側のメニューのページのような細い部分にあるか判別するというような方法はありますか。 フレームの中ならという部分は if (self != top) { top.location.href = self.location.href; } でよいかと思うのですが、左側とかそのようなことはなんらかのテクニックで取得できますか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
frameset要素のcols属性を確認することで最も左のフレームかどうかを判断する関数を作ってみました。 やたらと長くなりましたがframesetが多重になっていても大抵の場合で左のフレームかどうかを調べることができると思うのですが。 function isSelfLeftFrame() { if (self == top.frames[0]) { var node = top.document.getElementsByTagName("frameset")[0]; var frm = top.document.getElementsByTagName("frame")[0]; if (frm && searchNode(node, frm)) { return true; } } return false; } function searchNode(node, frm){ if (node && node.cols) { node = node.childNodes; for (var i = 0; i < node.length; i++) { if (frm == node[i] || searchNode(node[i], frm)) { return true; } } } return false; } 次のような条件判断文で左フレーム内のページであった場合の処理が行えます。 if (isSelfLeftFrame()) {...}
その他の回答 (1)
- taseki
- ベストアンサー率66% (155/233)
厳密に判別できるかわかりませんが、 たとえばウィンドウのサイズを window.innerWidth document.body.clientWidth などで取得して、細いかどうか判断するとか。 左か右か、というのは、ちょっと難しそうですね。 環境に依存しますが、何かのイベントでscreenXを調べるとか、 nameがleftだったら、とか…、確率の問題になってしまいますが。
お礼
回答ありがとうございました。 簡易的にはいろいろ方法がありそうですね。 やりたいことは単純な内容だったので、アドバイスの方法で処理できそうです。
お礼
回答ありがとうございました。 >frameset要素のcols属性を確認することで おかげ様でやりたいことはこれで問題なく利用できました。 ちょっと私にはむずかしい内容でした・・。(-_-;