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

Can I fetch a title of an external page in my domain using JavaScript?

我有几个页面(都位于与主页相同的目录中)通过 iFrame 加载到 parent。我想获取 child 页面标题中的每一个并将它们加载到一个数组中。那可能吗?

到目前为止我能做的最好的事情是在页面加载到 iFrame 时从 child 页面传递磁贴,但我需要从一开始就预加载所有标题以填充 table的内容如下图:

Parent代码:

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;
};

child代码:

window.onload = function passTitle(){
    var title = $(document).find("title").text();
    parent.pageTitle(title);
};

您想使用 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;
});

actually you could use just window without the .frames - at least in firefox, because window.frames === window - however, I'd recommend using window.frames for clarity in code