Javascript Can';我找不到孩子

Javascript Can';我找不到孩子,javascript,jquery,html,frame,frameset,Javascript,Jquery,Html,Frame,Frameset,我正在维护一个使用框架集/框架的旧站点 我不想在主框架上附加一个处理程序,这样当用户在某个地方单击主体时,就会弹出一个警报 我已经撞了我的头一段时间了,但我现在觉得我离它很近,我可以尝到它,但我仍然无法找出问题所在。我正在使用jquery1.5.1 $(function () { $($('frame[name="main"]')).ready(function () { console.log($('frame[name="main"]')); // this is a

我正在维护一个使用框架集/框架的旧站点

我不想在主框架上附加一个处理程序,这样当用户在某个地方单击主体时,就会弹出一个警报

我已经撞了我的头一段时间了,但我现在觉得我离它很近,我可以尝到它,但我仍然无法找出问题所在。我正在使用jquery1.5.1

$(function () {
    $($('frame[name="main"]')).ready(function () {
        console.log($('frame[name="main"]')); // this is a success (I can view it in firebug
        console.log($('frame[name="main"]').find('body')); // fails (nothing is found)
    });
});
这是相框

<frameset cols="190,*" frameborder="no" border="0" framespacing="0" framepadding="0" marginwidth="0" marginheight="0">
    <frame name="head" src="someHTMLPage1.html" scrolling="no" noresize frameborder="no" border="0" framespacing="0" framepadding="0" marginwidth="0" marginheight="0">
    <frame name="main" src="someHTMLPage2.html" scrolling="auto" frameborder="no" border="0" framespacing="0" framepadding="0" marginwidth="0" marginheight="0">
</frameset>

首先,jquery ready在为文档设计的窗口中工作不太好。框架封装窗口

另外,我认为您需要在框架内的页面上加载jquery来查找正文。 尝试不使用jQuery

var doc = window.frames["main"].document;
var bdy = doc.body;
bdy.onclick = function() { alert("your text here") };
另一件同样会影响您的事情是,如果框架中的页面与框架集不在同一个域中。这将阻止来自框架集的任何脚本

此外,您还可以更改为“加载”,而不是“准备就绪”

$($('frame[name=“main”])).load(function(){…
谢谢Arturo

你的解决方案有帮助,但并不完美。以下是我所做的

$(function () {

    $($('frame[name="info"]')).load(function () {
        var doc = window.frames["info"].document;
        doc.onclick = function () { alert('something') };
    });
});
我必须使用
.load
而不是
.ready
,这样才能工作


这在IE 7/8/8兼容模式和FF4和Chrome 12下都能工作(可能在FF和Chrome的早期版本中工作,我只是没有测试)

将其添加到框架内页面的问题是,此页面经常与许多其他页面交换。如果可能,我希望避免在每个页面上都有处理程序。所有这些页面都在框架集的同一域中吗?您可能遇到的另一个问题是,当您执行此块时,文档没有被交换加载。为什么不试试
$($('frame[name=“main”])。加载(function()…
而不是ready这正是我要做的。谢谢,伙计:)