16

js と jQuery のコードを含むページがあり、非常にうまく機能します。残念ながら、私のサイトはすべて非常に古く、フレームを使用しています。そのため、フレーム内にページをロードすると、$(document).ready()起動しません。

私のフレームセットは次のようになります。

<frameset rows="79,*" frameBorder="1" frameSpacing="1" bordercolor="#5996BF" noresize> 
    <frame name="header" src="Operations.aspx?main='Info.aspx'" marginwidth="0" marginheight="0" scrolling="no" noresize frameborder="0">
    <frame name="main" src="Info.aspx" marginwidth="0" marginheight="0" scrolling="auto" noresize frameborder="0">      
</frameset>

マイページがフレームに読み込まれますmain。私は何をすべきか?

4

12 に答える 12

8

別のコメントで言及されている方法を試しました:

$("#frameName").ready(function() {
    // Write you frame on load javascript code here
} );

それは私にはうまくいきませんでした。

これはしました:

$("#frameName").load( function() {
     //code goes here
} );

イベントはすぐには発生しませんが、画像と css が読み込まれるまで待機します。

于 2010-06-17T18:11:56.073 に答える
3

これが古いトピックであることは知っています。しかし、このページにたどり着いたあなたの一部を助けるために、ここに私の解決策があります:

$($("#frameName")[0].contentWindow.document).ready(function() {
    // Write you frame onready code here
});
于 2012-07-04T05:36:22.077 に答える
2

フレームのイベントを発生させたい場合はonload、次の手順に従います。

  1. 各タグにidandを割り当てます。両方の属性値が同じであることを確認してください。name<frame>idname

  2. 次のコードを使用してonload、フレームのイベントを発生させます。

    $("frameName").ready(function() { 
      // Write your frame onload code here
    }
    
于 2008-11-27T07:39:26.520 に答える
2

以下も私のために働いた:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script>
$(window.parent.frames[0].document).ready(function() {
    // Do stuff
});
</script>

[0] はドキュメントの最初のフレームであることを示し、[1] は 2 番目のフレームなどを示します。これは、マークアップを制御できず、ドキュメントの準備が整っている場合に特に便利です。

于 2012-01-31T15:23:10.840 に答える
1

私はこの投稿で長い間働いてきました...これが私の解決策です。

test.html

<!DOCTYPE HTML>
<html>
<head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>

    <script>        
      document.write('<frameset><frame name="frame_content" id="frame_content"></frame></frameset>');

      $('#frame_content').attr('src', 'test2.html');
      $('#frame_content').load(function()
      {
        if('${"#header"}' != '') {
          $("#header", frame_content.document).remove();
        }
      });
      if($('#frame_content').complete) $('#frame_content').trigger("load");
    </script>

</head>
</html>

test2.html

<!DOCTYPE HTML>
<html>

  <head>
  </head>

  <body>
    <div id="header">You will never see me, cause I have been removed!</div>
  </body>
</html>
于 2012-06-08T06:12:20.577 に答える
1

jQuery コードを Info.aspx ページ内に配置しようとしましたか?

于 2008-10-21T10:30:22.963 に答える
0

それが最善の解決策かどうかはわかりませんが、$(document).ready()体を取り外して保管すると、すべてが完璧に機能します。

于 2008-10-21T10:50:31.973 に答える
0

マークアップを変更する必要はありません。セレクターを固定するだけです。そのはず:

$("frame[name='main']").ready(function(){..}); 

いいえ

$("#frameName").ready(function(){..}); 

注: jQuery ready イベントが複数回発生するようです。ロジックに問題がないことを確認してください。

于 2014-11-26T03:21:02.753 に答える
0

あなたが何をしようとしているのかわからないが、私はフレーム外で動作するさらに古い古典的なASPアプリを持っており、最近jQuery機能を追加したばかりで、うまく機能している. $(document).ready() はフレーム内で問題なく動作しますが、別のフレームで DOM を参照したい場合は、Frame の onload イベントを使用して、フレームの DOM がロードされたことを知らせる必要があります。確かに iFrame を使用しましたが、コンセプトは同じはずです。

于 2008-10-22T02:57:08.603 に答える
-2

呼ばれない理由はあり$(document).ready()ません。ページにへのインクルードが含まれていることを確認してくださいjquery.js。空のHTMLページとアラートを使用して簡単なテストを実行し、別の問題があるかどうかを確認してください。

フレームの定義を含むHTMLページ内でこれを使用しようとしている場合は、そこにドキュメントがないことに注意してください。

于 2008-10-21T09:03:58.427 に答える