Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery和frames-$(文档).ready不';行不通_Javascript_Jquery_Frames - Fatal编程技术网

Javascript JQuery和frames-$(文档).ready不';行不通

Javascript JQuery和frames-$(文档).ready不';行不通,javascript,jquery,frames,Javascript,Jquery,Frames,我有一个页面,有一些js和jQuery代码,它运行得很好。但不幸的是,我所有的网站都非常陈旧,并且使用框架。因此,当我将页面加载到框架中时,$(document).ready()不会启动 我的框架集看起来像: <frameset rows="79,*" frameBorder="1" frameSpacing="1" bordercolor="#5996BF" noresize> <frame name="header" src="Operations.aspx?ma

我有一个页面,有一些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>


我的页面被加载到
框架中。我该怎么办?

没有理由不调用
$(document).ready()
。 确保您的页面包含一个include to
jquery.js
。试着用一个空的HTML页面和一个警报来做一个简单的测试,看看是否还有其他问题


如果您试图在包含框架定义的HTML页面中使用此选项,请记住那里没有文档,您必须使用

您是否尝试将jQuery代码放入Info.aspx页面中?

我不知道这是否是最佳解决方案,但当我删除
$(document).ready()时
并保留其主体,一切都能完美运行。

不确定您想做什么,但我有一个更老的经典asp应用程序,它在框架外运行,我最近刚刚添加了jQuery功能,它工作得很好。$(document).ready()在一个帧内工作正常,但是如果希望在另一个帧中引用DOM,则必须使用该帧的onload事件来通知何时加载该帧的DOM。诚然,我使用了iFrames,但概念应该是相同的。

如果要为帧触发
onload
事件,请执行以下步骤:

  • 为每个
    标记分配
    id
    名称。确保
    id
    name
    属性值相同

  • 使用以下代码触发帧的
    onload
    事件:

    $("frameName").ready(function() { 
      // Write your frame onload code here
    }
    

  • 我假设这是我在iframe中加载domcontents时遇到的类似问题


    我写道。

    我尝试过另一条评论中提到的方法:

    $("#frameName").ready(function() {
        // Write you frame on load javascript code here
    } );
    
    这对我来说不起作用

    这确实:

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

    即使事件没有那么快触发-它也会等待图像和css加载完成。

    以下内容也适用于我:

    <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>
    
    
    $(window.parent.frames[0].document).ready(函数(){
    //做事
    });
    

    [0]表示它是文档中的第一帧,[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>
    
    
    文件。写(“”);
    $('#frame_content').attr('src','test2.html');
    $('#frame_content')。加载(函数()
    {
    如果(“${”#标题“}”!=”){
    $(“#标题”,frame_content.document).remove();
    }
    });
    如果($('frame_content').complete)$('frame_content').trigger(“load”);
    
    test2.html

    <!DOCTYPE HTML>
    <html>
    
      <head>
      </head>
    
      <body>
        <div id="header">You will never see me, cause I have been removed!</div>
      </body>
    </html>
    
    
    你永远也见不到我,因为我已经被移除了!
    
    我知道这是一个老话题。但为了帮助你们中的一些人进入本页面,以下是我的解决方案:

    $($("#frameName")[0].contentWindow.document).ready(function() {
        // Write you frame onready code here
    });
    

    无需修改标记。只要把选择器修好。应该是:

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


    注意:jqueryready事件似乎触发了多次。确保这与你的逻辑一致。

    这个答案可能会晚些,但这个回答可能会帮助像我这样的人

    这可以通过本机Javascript代码实现-

    ifrm2 = var ifrm2 = document.getElementById('frm2');
    if (ifrm2.contentDocument.readyState == 'complete') {
      //here goes the code after frame fully loaded
    }
    
     //id = frm2 is the id of iframe in my page
    

    你的JavaScript在哪里?在“main”框架或框架集中?为清晰起见,应为$(“#frameName”)。选择器应为:$(“frame[name='main']),而不是$(“#frameName”)。@BrianG frame src是
    Operations.aspx?main='Info.aspx
    ifrm2 = var ifrm2 = document.getElementById('frm2');
    if (ifrm2.contentDocument.readyState == 'complete') {
      //here goes the code after frame fully loaded
    }
    
     //id = frm2 is the id of iframe in my page