javascript を介してブラウザ DOM に iframe を挿入しようとしていますが、IE の場合は境界線を削除したいのですが、削除できないようです。私はこれらを無駄に試しました:
iframeElement.style.borderStyle="none";
と
iframeElement.style.frameBorder = "0";
どんな提案でも大歓迎です。
javascript を介してブラウザ DOM に iframe を挿入しようとしていますが、IE の場合は境界線を削除したいのですが、削除できないようです。私はこれらを無駄に試しました:
iframeElement.style.borderStyle="none";
と
iframeElement.style.frameBorder = "0";
どんな提案でも大歓迎です。
奇妙なことに、私は今日、まさにこの問題に対する答えを探していました。iframe が document に追加される前に行う限りframeBorder
、 to0
プロパティの設定が機能することがわかりました。
var iframe = document.createElement("iframe");
iframe.frameBorder = 0;
document.body.appendChild(iframe);
これを試して。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.
}
}
iframeElement.style.borderCollapse = 1; を試してください。または iframeElement.style.borderWidth = 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]-->