11

javascript を介してブラウザ DOM に iframe を挿入しようとしていますが、IE の場合は境界線を削除したいのですが、削除できないようです。私はこれらを無駄に試しました:

iframeElement.style.borderStyle="none";

iframeElement.style.frameBorder = "0";

どんな提案でも大歓迎です。

4

5 に答える 5

22

奇妙なことに、私は今日、まさにこの問題に対する答えを探していました。iframe が document に追加される前に行う限りframeBorder、 to0プロパティの設定が機能することがわかりました。

var iframe = document.createElement("iframe");
iframe.frameBorder = 0;
document.body.appendChild(iframe);
于 2009-10-04T22:28:57.493 に答える
3

これを試して。IEやその他のブラウザでiframe要素を検出し、それらの境界線を削除します(ただし、JavaScriptを使用する代わりに、IE以外のブラウザで「border:none;」のCSSスタイルを設定できます)。また、iframeが生成され、ドキュメントに配置された後に使用された場合でも機能します(たとえば、JavaScriptではなくプレーンHTMLで追加されたiframe)。

これは、IEが境界線を作成するために機能しているように見えます。これは、期待どおりのiframe要素ではなく、iframeがBOMで作成された後のiframeのコンテンツに作成されるためです。($ @&*#@ !!! IE !!!)

注:IE部分は、親ウィンドウとiframeが同じオリジン(同じドメイン、ポート、プロトコルなど)からのものである場合にのみ(もちろん)機能します。そうしないと、スクリプトはIEエラーコンソールで「アクセス拒否」エラーを受け取ります。その場合、他の人が指摘しているように、生成する前に設定するか、非標準のframeBorder="0"属性を使用するしかありません。(または、IEをぼんやりと見せてください-私の現在のお気に入りのオプション;))

これを理解するために絶望のポイントに私に何時間も働いた...

楽しみ。:)

// =========================================================================
// Remove borders on iFrames

if (window.document.getElementsByTagName("iframe"))
   {
      var iFrameElements = window.document.getElementsByTagName("iframe");
      for (var i = 0; i < iFrameElements.length; i++)
         {
            iFrameElements[i].frameBorder="0";   //  For other browsers.
            iFrameElements[i].setAttribute("frameBorder", "0");   //  For other browsers (just a backup for the above).
            iFrameElements[i].contentWindow.document.body.style.border="none";   //  For IE.
         }
   }
于 2012-01-23T21:46:18.553 に答える
0

iframeElement.style.borderCollapse = 1; を試してください。または iframeElement.style.borderWidth = 0;

于 2009-10-04T16:40:16.580 に答える
0

HTML で「条件付きコメント」を使用して、IE8 でのみ「frameborder」属性を含めることもできるはずです。

 <!--[if IE 8]>
 <iframe id="my-iframe" frameborder="0"></iframe>
 <![endif-->
 <!--[if gt IE 8]><!-->
 <iframe id="my-iframe"></iframe>
 <!--<![endif]-->
于 2016-03-14T17:43:29.357 に答える