2016-07-18 12 views
0

Railsアプリの組み込み可能なウィジェットを作成して、ユーザーが外部のウェブサイトからアプリとやりとりできるようにしたいと考えています。iframeまたはJSを使用してサードパーティのサイトにRailsを埋め込むことはできますか?

これを実現するためにiframeを使用するように設定されました。しかし、私はiframeがこれを達成する最良の方法ではなく、代わりにJSを使用してHTML要素を埋め込むことを示唆していると思われるいくつかのフォーラム回答を見つけました。これは私を驚かせました - 私はiframeがCSSとスクリプトの分離のために明確な勝者になると思っていました。

サードパーティのウェブサイトに(限定された)アプリ機能を埋め込む最良の方法は何ですか?この対話は、ログインと単一の単純なフォームに限定されます。 JSのiframeは最善の方法を埋め込んでいますか?そして、副次的な質問として、いずれのアプローチでも気付いているセキュリティ上の問題はありますか?

答えて

2

iframeを使って大変だと思います。それはちょうど全体のウェブサイトの感情ではなく、別のスタイルの中のウェブサイトのようなもので、主にスタイルが一致しないか、スクロールバーを持っているか、反応のよいレイアウトが正しく適用されていません。だから、ここで少しプロ/コン一覧です:

のiframe PRO:

  • 要求が
"サンドボックス" のJavaScript(ノーコンフリクト)クロスサイト起源(最も可能性が高い、より安全な)
  • ではありません

    のiframe CON:

    • スタイルガイド
    • 履歴は変更されません(例:ナビゲーションについて

      • フルコントロール(あなたが$.loadなどとのリンクのクリックを無効にすることができます:あなたはPRO)あなたはURLを貼り付けると、友人にそれを送信することはできませんGETしてフォームを送信

      JSをすれば)。ブラウザの履歴変更の

    • 能力(履歴APIを、MDNを参照してください)自動的に継承されている
    • スタイルのHTMLコンポーネントの
    • スムーズなハンドリング

    JS CON:

    Sending multipart/formdata with jQuery.ajaxを参照してください)私はあなたが別の内部のJSフレーム(それは本当にまだベータ版です)として、あなたのレールのアプリを埋め込むことができます少しレールプラグインを書きました。プラグインは、リンク/フォームイベントのようなjsの問題の大部分を処理し、ブラウザの履歴に書き込みます。

    だからあなたが実際に別のウェブサイトの店のようなサイトに埋め込むべきアプリを実行する必要があるなら、私は埋め込みを使用します。

    soundcloud playerのように共有するカスタムアイテムを作成する場合は、iframeを使用することができます。

  • 1

    サードパーティのサイトがウィジェットとのやりとりに反応するようにするには、絶対にjavascriptを使用する必要があります。異なるドメイン間でiframeを通じてメッセージを渡すことは可能ですが、使用するのが最も便利ではありません。 https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

    javascriptを使用する場合、ウィジェットをレンダリングするjavascriptファイルを埋め込むようにユーザーに求めることができます。 CORSの問題を回避するために、ウィジェットはJSONPレスポンスをサポートするAPIと対話する必要があります。

    関連する問題