JQuery和框架 - $(document).ready不起作用

我有一个页面,在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框架。我该怎么办?

回答:

$(document).ready()没有理由不被调用。 确保您的页面包含一个包含到jquery.js。尝试用空白的HTML页面做一个简单的测试,并且只是提醒一下,看看是否有其他问题。

如果你要使用这个包含了框架的定义HTML页面中,记住,没有文件在那里,你将不得不使用

回答:

你试图把jQuery代码内Info.aspx页面?

回答:

我不知道这是否是最好的解决方案,但是当我删除$(document).ready()并保留其身体时,一切都很完美。

回答:

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

回答:

如果你想火的onload事件的框架,然后按照下列步骤:

  1. 分配一个idname每个<frame>标签。确保idname属性值相同。

  2. 使用下面的代码来触发onload事件的帧的:

    $("frameName").ready(function() { 

    // Write your frame onload code here

    }

回答:

我想这是我在iframe与DOMContentLoaded有类似的问题。我写了a blog post about it。

回答:

我曾尝试在另一则留言中提到的方法:

$("#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>

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

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(){..}); 

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

注:似乎jQuery的ready事件触发多次。确保你的逻辑没问题。

回答:

这个答案可能会迟到,但这个答复可以帮助我这样的人......

这可以通过本地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

以上是 JQuery和框架 - $(document).ready不起作用 的全部内容, 来源链接: utcz.com/qa/263443.html

回到顶部