なぜ人々はまだiframeを使用しているのですか?[閉まっている]


89

私にとって、iframeは純粋な悪です(まあ、それほど純粋ではないかもしれません)。彼らは多くの問題を抱えているようです。はい、サイト全体が1回読み込まれ、その後は1ページだけを読み込むことができます。しかし、人々はこの目的のためにAJAXを発明しました。

私が見つけた最大の問題のiframe1つは、URLが変更されなかったため、サブページの1つへのリンクを貼り付けることができなかったことです(はい、これには回避策があることを知っています)。第二に、ウェブ検索エンジンはそのサイトを正しく索引付けするのに問題があるかもしれません。

このサイトのアクセシビリティが悪化し、ブラウザによっては不適切に表示されることもあります。

(i)フレームなしでレイアウトを設計するためのより良い方法があります。毎日、「jQueryを使用してiframeにアクセスする方法」などのSOの質問をしている人を見ることができます。

では、iframeの利点は何ですか?それでもそれらを使用する理由は何ですか?理由を知りたいだけです:)

(それは本当の質問ではないので、それはCWです)


上記のモシェに同意します。Iframeのその他の用途は、最新のCSSをサポートしていない古いWebクライアントまたは独自の環境のみです。
Boris Hamanov 2010

最近では、残念ながら、すべてのブラウザに互換性の問題があります。それらは標準ではありません!divタグに問題があり、tableタグに問題があるなど、100%互換性のあるWebサイトを設計する時間が失われます。IE7と互換性のあるWebサイトを作成するための最終的な方法もあります。iframeを使用しています。iframeはすべての問題にパッチを当てることができます: '(私のウェブサイトのステータスを確認すると、IE7からの訪問がたくさんあります。2016年でも多くの人が古いブラウザを使用しています!!!
Mahdi Jazini

回答:


102

私は(現時点で)人々がまだAJAXの代わりにiframeを使用する2つの理由を考えることができます:

1)Iframeは、クロスドメインオリジンポリシーを回避します(画像、スクリプト、およびスタイルは回避しません)。これは、他のドメイン名からサイト/コンテンツを比較的安全に取得するのに役立ちます。基本的に、これにより、無制限のアクセスでページ全体を踏みにじることなく、他のドメインのデータを視覚的に表示できるという利点が得られます(JSONPのように)。

2)特定のmimeタイプだけでなく、iframe内から複数のタイプのリソースをロードできます(application / javascript、application / x-javascript、text / css、text / xml、image / png、imageに比較的制限されています) / jpeg、スクリプト付きのimage / gif、XHR、画像、およびソース)。たとえば、PDFを表示したい場合は、iframeを開いて、AdobeReaderプラグインにそのファイルを表示させることができます。さらに、同じドメインで、スクリプト、スタイル、および画像をすべて一緒にパイプライン化する場合(ページ上でインライン、画像はデータURIである必要があります)、iframeを使用してこれを実現できます(同じドメイン内にある場合)ドメイン、ポート、プロトコルJavaScriptでもアクセスできます)。

Gmailがiframeのセットであることをご存知ですか?目に見える部分はちょうど巧妙な配置です。さらに、多くのOAuth実装(Twitter、Facebook、Google、Yahoo!)は通常、iframeを使用して、ドメイン上のユーザーを正常な認証URLに関連付けます(ユーザーがログインした後)。


2
Re#1、しかしHTTPヘッダーはiframeをブロックする可能性があります.....
Pacerier 2017年

2
Re#2、しかしあなたはiframeなしでそれをすることができます、例えば<embed src="http://www.pdf995.com/samples/pdf.pdf" type="application/pdf">
Pacerier 2017年

4
#3に関して、Gmailはiframeなしで書き直すことができます。では、なぜ人々は今でも現代のブラウザにiframeを使用しているのでしょうか。質問は未回答のままです。
Pacerier 2017年

22

IFRAMEは、サードパーティのコンテンツをWebサイトに埋め込んで分離するために使用されます。

ほとんどのWeb広告ソリューションはiframeに基づいています。これは、セキュリティ(クロスドメインポリシー)と、サードパーティのコンテンツとスクリプト(一般的な使用例は広告)によって完全に管理できる画面上の分離された長方形を提供するためです。

IFRAMESのもう1つの最新の使用法は、AJAXアプリケーションの履歴の管理(一般的な戻るボタンの回避策)です。

FRAMEはIFRAMESの貧弱なバージョンです。それらの使用は減少しています。


1
これははるかに単純で、広告の良い例です:)
oneworld 2013年

15

ユーザーがjavascriptを無効にしている場合、ajaxが無効になっているときにiframeが機能します。人々がNoScriptのようなものを使用していることを考えると、これは問題外ではありません。


4
これは真実ですが、iframeの変更/追加/操作には、ほとんどの場合JavaScriptが必要です(私が考えることができる2つを除いて、ターゲットへのリンクとターゲットへの<form>投稿)。
ダンビーム

正しい; それでも、JSを使用してiframeが指すものを変更するには、の複雑さが増すのとは対照的に、通常は1行が必要ですXMLHttpRequest
Reinderien 2010

7

ページをリロードせずにファイルをアップロードする必要がある場合、ajaxWebサイトでそれらを使用します。


@Mwizak Ajaxは、angularを含むあらゆる種類のJavaScriptをafaikでカバーする必要があります。
codeReaper 2017

3

大企業でiframeが使用されているのを今でも見ています。そこでは、認証されたユーザーに関するヘッダー情報を挿入するシングルサインオンが提供され、iframeを介して実際のアプリケーションに渡されます。iframeを取り巻く「ポータル」はすべての特定の認証の詳細を処理するため、その背後にあるアプリケーションはそれぞれを実装する必要がなく、開発チームが簡単に作成でき、認証の詳細を監視および調整するための単一の場所があります。ユーザーの。


ドメイン、プロトコル、ポートが一致しない限り、XMLHttpRequest(w3.org/TR/XMLHttpRequest/#the-setrequestheader-method)でヘッダーを追加できない理由がわかりません(つまり、とは別の問題があります)ヘッダー)?
ダン・ビーム

重要なのは、それは2つの異なるアプリケーションであり、通常は2つの完全に異なるテクノロジーでさえあるということです。1つは認証を処理し、もう1つは認証チケット用に挿入されたヘッダーを取得します(または必要に応じて作成します)。
クリスファンデルマスト2010

3

それらを使用する技術的な理由はたくさんあります(特にDan Beamが言及したセキュリティの問題)。

すべきではないのは、「フレームのように」iframeを使用し、iframeのみを更新して新しいページに移動することです。あなたが言うように、これはナビゲーションがブックマーク可能/リンク可能であるのを防ぎ、通常のナビゲーションボタンに応答し、そしてopen-in-new-tabのような有用なリンクアフォーダンスを提供します。

しかし、それはiframeに特有のものではありません。新しいコンテンツをフェッチXMLHttpRequestしてメインコンテンツdivに書き込むことで、ナビゲーションが行われるページがますます増えていますinnerHTML。多くの場合、これはjQueryで行われますload()と巧妙で巧妙なスライドアニメーションでます。これは、iframe-used-as-frame、または実際には昔ながらのフレームセットと同じくらいひどくナビゲーションを壊します。非常に多くのWeb作成者がこの戦術を使用して、それが超近代的なWebデザイン方法論であると信じているのは残念ですが、実際には昨日の軽蔑されたフレームセットの新しいスキンにすぎません。

どちらの場合も回避できますが、ビューステートを#フラグメント識別子の部分に格納し、適切なハッシュナビゲーションをサポートする必要があることを意味します。これは簡単ではありません。それでも、検索エンジンなどの非JSエージェントには問題があります。両方をサポートするには、並列?ベースと#ベースベースのナビゲーションが必要になります。それは苦痛であり、ほとんどの人は気にしません。


HTML5のHistoryAPIを楽しみにしてください。これにより、戻る/進むボタンをリロードしたり壊したりせずにコンテンツをフェッチできます。
嘘ライアン

2

フレームセットはHTML5の時点で古くなっており、サイト内の別のサイトでフレームを作成する必要がある場合があります。また、AJAXはそれだけのことしかできません。iframeを使用せずにhttpsを介して別のドメインのサイトにファイルをアップロードしてみてください。AJAXはそこであなたを助けません。


2

他の理由に加えて、私はiframe私のアプリケーションで1つの特定の使用法を持っています。残念ながら、私の場合のターゲットブラウザはInternet Explorer 6です。Webページで修正されたフッターとヘッダーが必要です。このページの主要部分はスクロール可能です。

ただし、IE6には、CSSプロパティを使用して要素のdiv上にselect要素を表示できないというバグがありますz-index。したがって、iframeこの問題を回避するためのハックとして使用されるを作成する必要があります。

もちろん、これは本当に特定の使用法でiframeあり、唯一の懸念事項IE6です...


1

Javascript WYSIWYGエディターはiframeを使用します。これは、iframeを作成するための最も簡単で最良の方法だからです。たとえば、TinyMCEはそれを使用します:

http://tinymce.moxiecode.com/


1

私はソーシャルネットワークを構築していましたが、ウィジェットが他の人々のWebサイトに配置して、ミニプロファイルのように表示したり、リモートサーバー上のコンテンツと統合したりするのにiframeが役立つことがわかりました。これを構築する最も簡単な方法のようです。一部のウィジェットがJavaScriptを使用していることは知っています。また、iframeメソッドを使用すると、セッションは通常のようにサイトにアクセスするのと同じであるため、ボタンのように最適です。



0

iFrameは、Xドメイン要求として、またはパラメーターを介してソースにデータを投稿する場合など、場合によっては問題ありません。しかし、ドメイン間でデータにアクセスしたい場合は、CSSファイルを使用することを好みます。CSSファイルは、パラメーターを受け入れ、Cookieを設定し、ページにコンテンツを追加し(:before&:after)、視覚的なフィードバックを提供できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.