0

我在下面找到了用于创建 iframe 的片段:

我只想加载文本内容http://www.host.com并使 iframe 不可见display:none

背景:

我需要一种有效的方法来解析网站图标的位置。并非所有站点都有默认位置。例如<link rel="SHORTCUT ICON" href="../images/logo_small.ico" />.

因此,我需要的只是文本内容。PHP 有一个执行此操作的函数(file_get_contents),但我想在客户端执行此操作。

这是iframe 上的 mdn 文档

对于服务器端 PHP,使用file_get_contents。

function makeFrame() {
   ifrm = document.createElement("IFRAME");
   ifrm.setAttribute("src", "http://www.host.com");
   ifrm.style.width = 640+"px";
   ifrm.style.height = 480+"px";
   document.body.appendChild(ifrm);
} 

美味书签的例子:

javascript:(function()
{
    f='http://www.delicious.com/save?url='+encodeURIComponent(window.location.href)+
    '&title='+encodeURIComponent(document.title)+'&notes='+
    encodeURIComponent(''+
    (window.getSelection?window.getSelection():document.getSelection?
    document.getSelection():document.selection.createRange().text))+'&v=6&';
    a=function()
    {
        if(!window.open(f+'noui=1&jump=doclose','deliciousuiv6','location=1,links=0,scrollbars=0,to
        olbar=0,width=710,height=660'))
        {
            location.href=f+'jump=yes'
        }
    };
    if(/Firefox/.test(navigator.userAgent))
    {
        setTimeout(a,0);
    }
    else
    {
        a();
    }
})()
4

2 回答 2

1

只有当您的页面和框架页面都在同一个域中时,您才能访问 iframe 中的链接元素。引用您找到的文档

试图访问框架内容的脚本受同源策略的约束,并且如果它是从不同的域加载的,则无法访问其他窗口对象中的大部分属性。

因此,需要使用 PHP 解决方案。加载给定的域,使用 tagsoup 解析器并查询 dom 的link[rel="SHORTCUT ICON"].

您可以使用该解决方案创建一个 JSON API,该解决方案可以从您的应用程序的客户端 js 代码通过 Ajax 使用。

于 2012-05-15T23:35:59.997 回答
0

我认为如果页面位于不同的服务器上,由于 浏览器中的跨站点脚本限制,您将难以获取信息客户端。

如果您想查看所有本地内容:

XMLHttpRequest();

getResponseText();

我认为您可能最好使用 PHP 方法。

编辑:

我认为这是一个类似的问题:

XMLHttpRequest 从远程主机获取 HTTP 响应

那里的回应可能会提供进一步的帮助。

于 2012-05-15T23:34:22.650 回答