1

HTMLページがロードされたiframeを開く次のものがあり、うまく機能しますが、ページ/ iframeに閉じるボタンを追加して、単にiframe/ページを閉じ、開いたページに影響を与えないようにする方法:

(function (d) {
var modal = document.createElement('iframe');
modal.setAttribute('src', 'mypage.html'));
modal.setAttribute('scrolling', 'no');
modal.className = 'modal';document.body.appendChild(modal);
var c = document.createElement('link');
c.type = 'text/css';
c.rel = 'stylesheet';
c.href = '//myurl.com/testes.css';
document.body.appendChild(c);
}(document));

私はそれを閉じようとした次のことを試しましたが、iframe内に404メッセージが表示されます:

<a href="window.parent.document.getElementById('iframe').parentNode.removeChild(window.parent.document.getElementById('iframe'))">Close</a>

それがまったく役立つ場合、つまり、jqueryソリューションがある場合は、ページにjqueryをロードしています。

4

2 に答える 2

2

リンクはどこかにリンクすることになっており、href属性は URI を取ります。

を使用し<button type="button">てクリック ハンドラをバインドします。(属性を使用できますが、目立たないonclickわけではありません)

控えめなアプローチは次のようになります。

<a href="someUriWithoutAnIframe" target="_parent">foo</a>

そして、次の行に沿ってイベントハンドラーをバインドします

myLink.addEventListener('click', function (e) {
    var d = window.parent.document;
    var frame = d.getElementById('myFrame');
    frame.parentNode.removeChild(frame);
    e.preventDefault();
});
于 2012-08-02T10:20:54.260 に答える
0

リンクを iframe のある種のコンテナー div に配置し、後者を次の構造で作成できます。

<div id="iframe-container">
  <a href='#' onclick='this.parentNode.parentNode.removeChild(this.parentNode)'>Close</a>
  <iframe src="http://some.web/page.html" />
</div>

フレームワークなしで動作します。

于 2012-08-02T10:30:55.250 に答える