JQuery and frames - $(document).ready doesn't work

后端 未结 12 2323
长发绾君心
长发绾君心 2020-12-14 09:51

I have a page, with some code in js and jQuery and it works very well. But unfortunately, all my site is very very old, and uses frames. So when I loaded my page inside a fr

相关标签:
12条回答
  • 2020-12-14 10:21

    I have worked a long time with this post... here is my solution.

    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>
    
    0 讨论(0)
  • 2020-12-14 10:21

    Not sure what you're trying to do, but I have an even older classic asp app that operates out of frames, and I just recently added jQuery functionality and it is working great. The $(document).ready() works fine within a frame, but if you wish to reference the DOM in another frame, you'll have to use the Frame's onload event to let you know when the frame's DOM is loaded. Admittedly, I used iFrames, but the concept should be the same.

    0 讨论(0)
  • 2020-12-14 10:21

    I don't know if it is the best solution, but when I remove $(document).ready() and keep its body, everything works perfectly.

    0 讨论(0)
  • 2020-12-14 10:22

    I know this is an old topic. But to help some of you who reach this page, here is my solution:

    $($("#frameName")[0].contentWindow.document).ready(function() {
        // Write you frame onready code here
    });
    
    0 讨论(0)
  • 2020-12-14 10:26

    The following also worked for me:

    <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>
    

    The [0] indicates that it is the first frame in the document, [1] would be the second frame, and so on. This is particularly nice if you do not have control over the mark-up, and it is still utilizing document ready.

    0 讨论(0)
  • 2020-12-14 10:27

    Have you tried to put the jQuery code inside the Info.aspx page?

    0 讨论(0)
提交回复
热议问题