Javascript JQuery和frames-$(文档).ready不';行不通
我有一个页面,有一些js和jQuery代码,它运行得很好。但不幸的是,我所有的网站都非常陈旧,并且使用框架。因此,当我将页面加载到框架中时,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
$(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 tojquery.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