iframeまたはshadowdomを使用してクロスブラウザサブドキュメントを作成するにはどうすればよいですか?

デズマン

私は、それ自身で、JavaScriptで完全にカプセル化されたサブ文書を作成したい<head><body>、スタイル、HTML、およびJS。基本的にはshadowdomまたはiframeですが、src属性はありません。

私はシャドウドムのアイデアが大好きですが、そのサポートは非​​常に低く、プライムタイムの準備ができていません。

そのため、私はiframeの作成に取り組んでいますが、その過程でさまざまな障害にぶつかっています。これが私のさまざまな試みを示すjsFiddleです。

iframeはDOMに存在できません。この部分は重要です。明確にするために、それが一時的にdomに存在する場合は問題ありませんが、抽出でき、JSにのみ存在する必要があります。

$('body').append('<iframe id="iframeGenerator" />');
var iframe3 = $('#iframeGenerator');
var iframe3Contents = iframe3.contents();
$('#iframeGenerator').remove();
var head = iframe3.contents().find('head');

甘い、私たちは頭を持っています

console.log(head.length);

しかし、内容はどのように見えますか?

console.log(iframe3Contents.get(0));

これはドキュメントですが、要素の内部ではないので、domまたは別の要素の内部に配置してみましょう。セレクターにコンテキストなどがないため、次の両方の試行は機能しません...

$('body').append(iframe3Contents);
var generatedIframe = $('<iframe />').append(iframe3Contents);

domに何も追加せずにiframe / subdocuemntを作成できるようにしたいと思います...しかし、必要な場合は、後でそれをdomから削除して、jsでさらに管理できるようにしたいと思います。

私はこの小さな関数を持っていますが、これは機能しませんが、作成したいiframeまたはサブドキュメントジェネレーターの種類を示しています

var iframeHtml;
giveMeIframe = function() {
  var iframeContents;
  if (iframeHtml) {
    return iframeHtml;
  } else {
    $('body').append('<iframe id="iframeGenerator" style="display: none" />');
    iframeContents = $('#iframeGenerator').contents();
    iframeHtml = $('<iframe />');
    iframeHtml.append(iframeContents);
    $('#iframeGenerator').remove();
    return iframeHtml;
  }
}
ポールウェイ

フレームから情報にアクセスする(またはフレームに書き込む)には、DOM内にある必要があります。非表示にすることもできますが、それでもフレームオブジェクト内に存在する必要があります。JQueryはframesオブジェクトを介してiFrameにアクセスしており、domから削除されると、framesオブジェクトから削除されます。

この質問に出くわした人への将来の参照のために、次のようにカプセル化を取得できます。

$('#iframeGenerator2').contents().find('html').html(frame2HTML);

次に例を示します:http//jsfiddle.net/yP34y/4/

jsfiddleの例では、すべてがDOMに追加された後にのみ機能することに注意してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

親liをクリックしたときにドロップダウンメニューリストを開くように設定するにはどうすればよいですか?次にjavascriptを使用してサブliを開きますか?

分類Dev

doxygenを使用してパブリックWebサーバーAPIドキュメントを作成するにはどうすればよいですか?

分類Dev

phantomjsまたは代替ブラウザを使用してnodejsでWebプロキシを作成するにはどうすればよいですか?

分類Dev

ユーザーが新しいドキュメントを作成した場合、クラウド機能を使用してFirestoreデータをAlgoliaにインデックス付けするにはどうすればよいですか?

分類Dev

ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

分類Dev

ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

分類Dev

すべてのクロスブラウザ互換のスキューdivエッジを作成するにはどうすればよいですか?

分類Dev

ブラウザがreact-reduxアプリケーションをサポートしているかどうか、および/またはロードに失敗したかどうかを検出するにはどうすればよいですか?

分類Dev

C#ドライバーを使用して、MongoDBの配列のサブドキュメントに含まれる配列のサブドキュメントのフィールドを更新するにはどうすればよいですか?

分類Dev

スレッドはブロッキング呼び出しによってブロックされます-ブロッキング呼び出しでタイムアウトを作成するにはどうすればよいですか?

分類Dev

与えられたドロップダウンメニューから選択されたすべての可能な組み合わせについて、ウェブサイトから結果を「スクレイプ」するPythonプログラムを作成するにはどうすればよいですか?

分類Dev

Pythonを使用してロイターのウェブサイトのサブセクション(中東など)の20を超えるニュースヘッドラインリンクを取得するにはどうすればよいですか?

分類Dev

Flutterブロックを使用して、ユーザーが入力したときにその値を別のウィジェットに更新するテキストフィールドを作成するにはどうすればよいですか?

分類Dev

ネストセパレータを使用してサブドキュメントに分割するにはどうすればよいですか?

分類Dev

ユーザーがUWPでテキスト読み上げに触れて使用できるように、バウンディングボックスオーバーレイを備えたMicrosoft.media.ocrを使用してライブカメラを作成するにはどうすればよいですか?

分類Dev

アトミッククエリを使用して、マングースの別のサブドキュメント内のサブドキュメントを更新するにはどうすればよいですか?

分類Dev

IntelliJでは、Shift + F1を使用して、生成されたドキュメントをブラウザーで表示するにはどうすればよいですか?

分類Dev

RabbitMQの「ping」に相当するものはありますか?エクスチェンジまたはキューがブロードキャストしているかどうかを診断するにはどうすればよいですか?

分類Dev

セマンティックUIを使用してサブメニューのスクロール可能なドロップダウンを作成するにはどうすればよいですか?

分類Dev

CまたはC ++でステートメントブロックを使用して関数を定義するにはどうすればよいですか?

分類Dev

ブートストラップのボタンの代わりにスパンタグとグリフィコンを使用してドロップダウンメニューを作成するにはどうすればよいですか?

分類Dev

Azure Functionsを使用してプロアクティブな通知/ブロードキャストメッセージをさまざまなチャネルを使用しているユーザーに送信するにはどうすればよいですか?

分類Dev

いずれかのブラウザがAndroidにファイルを保存すると、ブロードキャストが送信されますか?Androidのブラウザで保存/ダウンロードしたファイルを傍受するにはどうすればよいですか?

分類Dev

ブラウザでjsonデータを使用してRESTPOSTリクエストをシミュレートするにはどうすればよいですか?

分類Dev

bridgefy SDKを使用してオフラインブロードキャストメッセージを送信するにはどうすればよいですか?

分類Dev

terraformを使用して、可変数のリソースブロックを使用してAWS IAMポリシードキュメントを動的に作成するにはどうすればよいですか?

分類Dev

RAIIプロパティを使用してサブスクライバーオブジェクトを作成するにはどうすればよいですか?

分類Dev

Mongooseを使用して別のスキーマのサブドキュメントに保存されているすべてのドキュメントをid-sで取得するにはどうすればよいですか?

分類Dev

ブラウザウィンドウに合わせてキャンバスのサイズを変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    親liをクリックしたときにドロップダウンメニューリストを開くように設定するにはどうすればよいですか?次にjavascriptを使用してサブliを開きますか?

  2. 2

    doxygenを使用してパブリックWebサーバーAPIドキュメントを作成するにはどうすればよいですか?

  3. 3

    phantomjsまたは代替ブラウザを使用してnodejsでWebプロキシを作成するにはどうすればよいですか?

  4. 4

    ユーザーが新しいドキュメントを作成した場合、クラウド機能を使用してFirestoreデータをAlgoliaにインデックス付けするにはどうすればよいですか?

  5. 5

    ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

  6. 6

    ユーザーがドロップダウンメニューから選択したパラメーターに基づいてJavaオブジェクトのリストをソートするにはどうすればよいですか?

  7. 7

    すべてのクロスブラウザ互換のスキューdivエッジを作成するにはどうすればよいですか?

  8. 8

    ブラウザがreact-reduxアプリケーションをサポートしているかどうか、および/またはロードに失敗したかどうかを検出するにはどうすればよいですか?

  9. 9

    C#ドライバーを使用して、MongoDBの配列のサブドキュメントに含まれる配列のサブドキュメントのフィールドを更新するにはどうすればよいですか?

  10. 10

    スレッドはブロッキング呼び出しによってブロックされます-ブロッキング呼び出しでタイムアウトを作成するにはどうすればよいですか?

  11. 11

    与えられたドロップダウンメニューから選択されたすべての可能な組み合わせについて、ウェブサイトから結果を「スクレイプ」するPythonプログラムを作成するにはどうすればよいですか?

  12. 12

    Pythonを使用してロイターのウェブサイトのサブセクション(中東など)の20を超えるニュースヘッドラインリンクを取得するにはどうすればよいですか?

  13. 13

    Flutterブロックを使用して、ユーザーが入力したときにその値を別のウィジェットに更新するテキストフィールドを作成するにはどうすればよいですか?

  14. 14

    ネストセパレータを使用してサブドキュメントに分割するにはどうすればよいですか?

  15. 15

    ユーザーがUWPでテキスト読み上げに触れて使用できるように、バウンディングボックスオーバーレイを備えたMicrosoft.media.ocrを使用してライブカメラを作成するにはどうすればよいですか?

  16. 16

    アトミッククエリを使用して、マングースの別のサブドキュメント内のサブドキュメントを更新するにはどうすればよいですか?

  17. 17

    IntelliJでは、Shift + F1を使用して、生成されたドキュメントをブラウザーで表示するにはどうすればよいですか?

  18. 18

    RabbitMQの「ping」に相当するものはありますか?エクスチェンジまたはキューがブロードキャストしているかどうかを診断するにはどうすればよいですか?

  19. 19

    セマンティックUIを使用してサブメニューのスクロール可能なドロップダウンを作成するにはどうすればよいですか?

  20. 20

    CまたはC ++でステートメントブロックを使用して関数を定義するにはどうすればよいですか?

  21. 21

    ブートストラップのボタンの代わりにスパンタグとグリフィコンを使用してドロップダウンメニューを作成するにはどうすればよいですか?

  22. 22

    Azure Functionsを使用してプロアクティブな通知/ブロードキャストメッセージをさまざまなチャネルを使用しているユーザーに送信するにはどうすればよいですか?

  23. 23

    いずれかのブラウザがAndroidにファイルを保存すると、ブロードキャストが送信されますか?Androidのブラウザで保存/ダウンロードしたファイルを傍受するにはどうすればよいですか?

  24. 24

    ブラウザでjsonデータを使用してRESTPOSTリクエストをシミュレートするにはどうすればよいですか?

  25. 25

    bridgefy SDKを使用してオフラインブロードキャストメッセージを送信するにはどうすればよいですか?

  26. 26

    terraformを使用して、可変数のリソースブロックを使用してAWS IAMポリシードキュメントを動的に作成するにはどうすればよいですか?

  27. 27

    RAIIプロパティを使用してサブスクライバーオブジェクトを作成するにはどうすればよいですか?

  28. 28

    Mongooseを使用して別のスキーマのサブドキュメントに保存されているすべてのドキュメントをid-sで取得するにはどうすればよいですか?

  29. 29

    ブラウザウィンドウに合わせてキャンバスのサイズを変更するにはどうすればよいですか?

ホットタグ

アーカイブ