我有几个页面(都与主页面位于同一目录中)通过iFrame加载到父页面中。我想获取每个子页面标题并将它们加载到一个数组中。那可能吗?
我最好能做的就是在页面加载到iFrame时从子页面传递tile,但是我需要从头开始预加载所有标题以填充目录,如下所示:
家长代码:
var pages = new Array("page1.html", "page2.html", "page3.html");
var maxPages = pages.length;
function pageTitle(title){ //called from inside a child HTML
document.getElementById("titleText").innerHTML = title;
};
子代码:
window.onload = function passTitle(){
var title = $(document).find("title").text();
parent.pageTitle(title);
};
答案 0 :(得分:1)
你想使用window.frames
- 这是一个框架对象列表(不是一个数组 - 对于第二个解决方案很重要)
然后,最简单的方法就是这个
var pageTitles = [];
for (i = 0; i < window.frames.length; i++) {
if( !!window.frames[i].document) { // only frames in same domain
pageTitles.push(window.frames[i].document.title);
}
}
或者,更高级,但在我看来更好的方式
var pageTitles = [].filter.call(window.frames, function(frame) {
return !!frame.document; // return only frames in same domain
}).map(function(frame) {
return frame.document.title;
});
实际上你可以只使用
window
而不使用.frames
- 至少在firefox中,因为window.frames === window
- 但是,为了清晰起见,我建议使用window.frames
< / p>