如何加载仅包含文本内容的 iFrame

How can I load an iFrame with only textual content?

本文关键字:文本 iFrame 包含 何加载 加载      更新时间:2023-09-26

我在下面找到了创建 iframe 的代码片段:

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

背景:

我需要一种有效的方法来解析图标位置。 并非所有站点都有默认位置。 例如<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();
    }
})()

只有当您的页面和框架页面位于同一域中时,您才能访问 iframe 中的链接元素。要引用您找到的文档,请执行以下操作:

尝试访问框架内容的脚本受同源策略的约束,并且无法访问另一个窗口对象中的大多数属性(如果该对象是从其他域加载的(。

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

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

我认为,

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

如果它都是本地的,你想看:

XMLHttpRequest();

getResponseText();

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

编辑:

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

XMLHttp请求从远程主机获取 HTTP 响应

那里的答复可能会提供进一步的帮助。