2013-01-02 31 views
9

私は、ウェブサイトのごく一部をiframeに入れたいと考えています。どうすればいい?通常、ウェブサイトのiframeを設定すると(yahooと言う)、ウェブサイト全体が取得されます...私はウェブサイトのほんの一部だけを望んでいましたが、どうすればいいですか?ウェブサイトの特定のセクションのみをiframeに挿入するにはどうすればよいですか?

ウェブサイトのiframeに余白を付けることはできますか?

ウェブサイトのiframeを自分のウェブサイトに配置したいと考えています。 (それが理にかなっている場合)、事前に

ありがとう:D

答えて

22

参照を表示する必要があるコンテンツのdiv IDです

<iframe src="http://site.com/#content"></iframe> 

でフルウェブサイトをロードします外部であり、外部ページを制御できません。したがって、IFRAMEコンテンツを目的の位置にスクロールする必要があります。これはもちろん不可能です。 JavaScriptのハックはいくつかありますが、ページが読み込まれた後にのみスクロールが行われるため、これらはすべて問題になります。 解決策

IFRAMEをdivにラップし、絶対TOP属性とLEFT CSSプロパティを使用してDIVコンテンツをスクロールすることができます。ここで

#my-div 
{ 
    width : 400px; 
    height : 200px; 
    overflow : hidden; 
    position : relative; 
} 

#my-iframe 
{ 
    position : absolute; 
    top  : -100px; 
    left  : -100px; 
    width : 1280px; 
    height : 1200px; 
} 

ディメンションの400x200pxと1つのDIVを持っている:

は、ここでの例です。これでIFRAMEを移動することで、適切な場所に配置することができます。

<div id="my-div"> 
<iframe src="http://www.example.com" id="my-iframe" scrolling="no"></iframe> 
</div> 
+0

どのようにwww.example.comでは動作しますか? https://www.marktplaats.nlではありませんか? (iframeが白/非表示、エラーが表示されず、iframeをスクロール可能またはそれ以上に変更しても何も変更されません)。 –

1

はあなたで動作するように完全なウィンドウを提供します。あなたが望むことを行うための最も直接的な方法は、サーバーに、あなたが表示したいフラグメントだけを含む完全なページを与えることです。

代わりに、あなただけのシンプルな<div>を使用してページ全体をロードして、必要なだけの部分を摘み取るためにjQueryのload機能を使用することができます。

$('#target-div').load('http://www.yahoo.com'); 

他のものがあるかもしれませんあなたがする必要があります重要な違いは、コンテンツが別のウィンドウに分離されるのではなく、メインページの一部になることです。


ページの一部だけを取得するためにURLを操作することはできません。だからあなたがしたいと思うのは、あなたが選んだサーバー側の言語を使ってページの内容を取得し、HTMLを解析することです。そこからあなたが探している特定のDIVをつかみ、それをあなたのスクリーンに印刷することができます。不要なコンテンツを削除することもできます。

PHPを使用すると、file_get_contents()を使用して、解析するファイルを読み取ってからDOMDocumentを使用して解析し、必要なDIVを取得できます。

ここに基本的な考え方があります。これはテストされていませんが、正しい方向にあなたを指している必要があります:

$page = file_get_contents('http://touch.facebook.com'); 
$doc = new DOMDocument(); 
$doc->loadHTML($page); 
$divs = $doc->getElementsByTagName('div'); 
foreach($divs as $div) { 
    // Loop through the DIVs looking for one withan id of "content" 
    // Then echo out its contents (pardon the pun) 
    if ($div->getAttribute('id') === 'content') { 
     echo $div->nodeValue; 
    } 
} 
+0

iframeを縮小しようとすると、ウェブサイトの左上隅に向かって縮小されます。このウェブサイトでこの投稿のiframeを欲しかったと言います。どのように私は他のすべてを排除しながら、ページの真ん中に何かの周りにiframeを得るだろうか? –

+1

ohk 2分後に再度回答を確認してください。私はそれを編集しています – Azzy

+0

こんにちは、ここでは 'id'と 'content'は何ですか? –

1

これは確実に起因するsame origin policyおよび関連iframeの制限を行うことはできません。

..同じ発信元ポリシーは、JavaScriptなどの多くのブラウザ側プログラミング言語にとって重要なセキュリティコンセプトです。 ポリシーは、異なるサイトのページにわたるほとんどのメソッドとプロパティへのアクセスを防ぎます。

それは、必要に応じて、親ではJavaScriptが埋め込まれたIFRAMEのDOMやCSSを変更することができ、あなたのウェブサイト[または標的部位へのプロキシ]であなたのウェブサイトだった場合...

ターゲットウェブサイトの場合別の手段(XDR/XHR + CORSを含む)でデータをやりとりしたいなら、潜在的にハック・ア・ボウズとして使用することもできる。しかし、この作業には一般的な解決策はありません。

でもjQuery.loadは(XHRを使用する)同一生成元ポリシーによって制限されます。

により、ブラウザのセキュリティ制限に、最も「アヤックス」の要求が同一生成元ポリシーの対象となります。要求は別のドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。

+0

私はiframeを縮小しようとすると、それはウェブサイトの左上隅に縮小されます。このウェブサイトでこの投稿のiframeを欲しかったと言います。どのように私は他のすべてを排除しながら、ページの真ん中に何かの周りにiframeを得るだろうか? –

+0

@BrianSmith私は、調整されたコミュニケーションを使わないで一般的な解決法を知っています。ただし、あなたのターゲットクライアントがiframeを埋め込むことができる場合、あなたのために働くTahirの答えを見てください。 (私には制限があるかどうか分かりません) –

-3

行うための別の方法は、簡単な方法#contentは、ほとんどの場合には

+0

iframeを縮小しようとすると、ウェブサイトの左上隅に向かって縮小されます。このウェブサイトでこの投稿のiframeを欲しかったと言います。どのように私は他のすべてを排除しながら、ページの真ん中に何かの周りにiframeを得るだろうか? –

関連する問題