我可以使用JavaScript在我的域中获取外部页面的标题吗?

时间:2016-02-20 02:22:57

标签: javascript html external fetch title

我有几个页面(都与主页面位于同一目录中)通过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);
};

1 个答案:

答案 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>