このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
pkg: "@nocobase/plugin-block-iframe"
Iframe ブロック
ブロック: iframeCommunity Edition+概要
「Iframe ブロック」を使うと、外部のウェブページやコンテンツを現在のページに埋め込むことができます。URLを設定するか、HTMLコードを直接挿入するだけで、外部アプリケーションをページに簡単に統合できます。HTMLページを使用すれば、コンテンツを柔軟にカスタマイズして特定の表示要件を満たすことができます。この方法は、カスタマイズされた表示が必要なシナリオに特に適しており、ページ遷移なしで外部リソースを読み込むことで、ユーザーエクスペリエンスとページのインタラクティブ性を向上させます。
インストール
これは組み込みのプラグインなので、インストールは不要です。
ブロックの追加

URLまたはHTMLを設定して、外部アプリケーションを直接埋め込みます。

テンプレートエンジン
文字列テンプレート
デフォルトのテンプレートエンジンです。
Handlebars

詳細はHandlebarsテンプレートエンジンのドキュメントをご参照ください。
変数の受け渡し
HTMLでの変数解析のサポート
現在のブロックコンテキストで変数セレクターから変数を選択するサポート


コードによるアプリケーションへの変数注入と利用のサポート
コードを使ってカスタム変数をアプリケーションに注入し、HTML内で利用することもできます。例えば、Vue 3とElement Plusを使用して動的なカレンダーアプリケーションを作成する例です。

例:ReactとAnt Design (antd) を使用して作成されたシンプルなカレンダーコンポーネントで、dayjsを組み合わせて日付を処理します。

URLでの変数サポート

変数に関する詳細は、変数ドキュメントをご参照ください。
JSブロックでIframeを作成する (NocoBase 2.0)
NocoBase 2.0では、JSブロックを使ってiframeを動的に作成し、より詳細な制御を行うことができます。このアプローチにより、iframeの動作やスタイルをカスタマイズする際の柔軟性が向上します。
基本的な例
JSブロックを作成し、以下のコードを使ってiframeを作成します。
主要なポイント
- ctx.element: 現在のJSブロックコンテナのDOM要素
- sandbox属性: iframeコンテンツのセキュリティ制限を制御します。
allow-scripts: iframeがスクリプトを実行することを許可します。allow-same-origin: iframeが自身のオリジンにアクセスすることを許可します。
- replaceChildren(): コンテナのすべての子要素をiframeで置き換えます。
ロード状態を伴う高度な例
ロード状態とエラー処理を追加することで、iframeの作成を強化できます。
セキュリティに関する考慮事項
iframeを使用する際は、以下のセキュリティに関するベストプラクティスを考慮してください。
- HTTPSの使用: 可能な限り常にHTTPS経由でiframeコンテンツを読み込みます。
- Sandbox権限の制限: 必要なsandbox権限のみを有効にします。
- コンテンツセキュリティポリシー: 適切なCSPヘッダーを設定します。
- 同一オリジンポリシー: クロスオリジン制限に注意してください。
- 信頼できるソース: 信頼できるドメインからのみコンテンツを読み込みます。

