• ベストアンサー

jQueryBlockUIをフレーム内で動かす時

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

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.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に対応して無いみたいです。 よって、無理でしょう.....

jobvba
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A