プロが教える店舗&オフィスのセキュリティ対策術

2つあるフレームのうち、片方のフレーム内に設置したボタンを押したらBlockUIが動くように作りました。
処理中は確かにBlockUIが動作しているのですが、片方のフレーム一杯にしか表示されません。
画面全てに表示させたいのですが、どのように書けば良いのでしょうか?
記述方法、もしくは参考になるURLがありましたら、教えてください。
宜しくお願い致します。

A 回答 (1件)

フレームがiframeなのかframesetのframeなのか書いて無いのでわかりませんが、


iframeなら親から制御する事で画面全てにブロックがかけられました。
(例)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Block Ui test</title>
<script type="text/javascript" charset="utf-8" src="/jslib/jquery-1.3.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="/jslib/jQueryblockUI.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
$(document).ready(function(){
var frame=$($("iframe")[0]);
frame.load(function(){
frame.contents().find('#blockButton').click(function(){
$.blockUI();
setTimeout($.unblockUI, 2000);
});
});
});
// -->
</script>
</head>
<body>
<iframe src="left.htm"></iframe>
<iframe src="right.htm"></iframe>
</body>
</html>
同じ事をframesetでやろうとすると、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>Block Ui test</title>
<style type="text/css"></style>
<script type="text/javascript" charset="utf-8" src="/jslib/jquery-1.3.2.min.js"></script>
<script type="text/javascript" charset="utf-8" src="/jslib/jQueryblockUI.js"></script>
<script type="text/javascript" charset="utf-8">
<!--
$(document).ready(function(){
var frame=$($("frame")[0]);
frame.load(function(){
var right = $($("frame")[0].contentWindow.document);
right.find('#blockButton').click(function(){
alert("ブロックされた");
$.blockUI();
setTimeout($.unblockUI, 2000);
});
});
});
// -->
</script>
</head>
<frameset cols="500,*" frameborder="no" border="0" framespcing="0">
<frame src="left.htm">
<frame src="right.htm">
</frameset>
</html>
clickのイベントまでは拾えますが、
$.blockUI();
が動作しません。
ライブラリーのソースを見ると
$.blockUI = function(opts) { install(window, opts); };
となっており、windowオブジェクトを渡してますが、
これがframesetに対応して無いみたいです。
よって、無理でしょう.....

この回答への補足

回答ありがとうございます。
ソースを記載していなかったため、非常に分かりにくい質問となってしまいました。
フレームは、framesetです。
回答頂いた内容を実装してみたところ、仰られている通りの動作になりました。
似たような動作でも構わないのですが、実現はできるのでしょうか?

補足日時:2010/03/16 11:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!