1

<div>動的に作成された があり、<iframe>. は<iframe>それ自体を閉じることができ、その時点で<div>は削除されます。

これまでのところ、私は持っています:

var div = document.createElement('div'), ifr = document.createElement('iframe');
// some styles and stuff here, including ifr.src
ifr.contentWindow.container = div; // Note that domains are the same

// within the iframe's code, possibly a "close" link or after completing an operation
container.parentNode.removeChild(container);

できます。ただし、iframe 内のページが元のページである場合のみです。別のページへのリンクをクリックすると、window.containerは定義されなくなります。

ウィンドウに永続的なデータを保存するために使用できることはわかってwindow.nameいますが、シリアル化できるデータに限定されています。私の知る限り、ID を割り当ててそれを保存する以外に、DOM ノードをシリアライズすることはできません。このような恣意的な ID は避けたいので、誰かがより良い解決策を提案できるなら、私は非常に感謝しています。

4

2 に答える 2

1

次のコードを使用します。

//At the frame:
var parentFrames = parent.document.getElementsByTagName("iframe");
for(var i=parentFrames.length-1; i>=0; i--){
    if(parentFrames[i].contentWindow == window) {
        parentFrames[i].parentNode.removeChild(parentFrames[i]); //Removes frame
        //Add an extra `.parent` at each side of the expression to remove the `div`.
        break;
    }
}
于 2011-09-25T12:19:43.487 に答える
0

にロードされたページ<iframe>は、「window.parent」を使用して、含まれているページにアクセスできます。したがって、「魔法の」参照を に保持する代わりに、<iframe>それを含むページに保持し、「子」ページにそれを検索させます。

  function closeMe() { // inside the iframe page
    window.parent.frameContainer.removeChild(window.parent.removableFrame);
  }

<iframe>「親」に加えて、「ウィンドウ」の「トップ」プロパティは、ウィンドウ (フレーム) のチェーンが 1 ステップよりも長い場合 (つまり、アン内<iframe>など)に最上位のコンテキストを参照します。

于 2011-09-25T12:07:49.463 に答える