我有一个页面,在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
框架中。我该怎么办?
答案 0 :(得分:7)
我尝试过另一条评论中提到的方法:
$("#frameName").ready(function() {
// Write you frame on load javascript code here
} );
它对我不起作用。
这样做了:
$("#frameName").load( function() {
//code goes here
} );
即使事件没有快速启动,它也会等到图像和css也加载完毕。
答案 1 :(得分:3)
我知道这是一个古老的话题。但是为了帮助一些到达此页面的人,这是我的解决方案:
$($("#frameName")[0].contentWindow.document).ready(function() {
// Write you frame onready code here
});
答案 2 :(得分:2)
如果您要为您的相框触发onload
事件,请按以下步骤操作:
为每个id
标记分配name
和<frame>
。确保id
和name
属性值相同。
使用以下代码触发框架的onload
事件:
$("frameName").ready(function() {
// Write your frame onload code here
}
答案 3 :(得分:2)
我认为这是我在iframe中使用DOMContentLoaded时遇到的类似问题。
答案 4 :(得分:1)
您是否尝试将jQuery代码放在Info.aspx页面中?
答案 5 :(得分:1)
以下内容对我也有用:
<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]是第二帧,依此类推。如果您无法控制标记,并且仍在使用文档准备就绪,这一点特别好。
答案 6 :(得分: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>
答案 7 :(得分:0)
我不知道这是否是最佳解决方案,但当我删除$(document).ready()
并保留其身体时,一切都运作良好。
答案 8 :(得分:0)
不确定你要做什么,但我有一个更老的经典asp应用程序,它运行在框架之外,我刚刚添加了jQuery功能,它运行良好。 $(document).ready()在一个框架内工作正常,但如果你想在另一个框架中引用DOM,你必须使用Frame的onload事件让你知道何时加载了框架的DOM。不可否认,我使用的是iFrame,但概念应该是相同的。
答案 9 :(得分:0)
无需修改标记。只需修复选择器。它应该是:
$("frame[name='main']").ready(function(){..});
不是
$("#frameName").ready(function(){..});
注意:似乎jQuery ready事件多次触发。确保你的逻辑没问题。
答案 10 :(得分:0)
这个答案可能会迟到,但这个回复可能对像我这样的人有所帮助......
这可以通过原生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
答案 11 :(得分:-2)
没有理由不调用$(document).ready()
。
确保您的网页包含jquery.js
的附加内容。尝试使用空的HTML页面进行简单的测试,只需要一个警报,看看是否还有其他问题。
如果您试图在包含框架定义的HTML页面中使用它,请记住那里没有文档,您将不得不使用