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メソッドを使用するのが最適だと思います。

編集:

これは私が思う同様の質問です:

リモートホストから HTTP 応答を取得するための XMLHttpRequest

そこにある回答は、さらなる助けになるかもしれません。

于 2012-05-15T23:34:22.650 に答える