質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

17400閲覧

IE11でcontentWindow.documentのエラー

answer

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/05/08 23:34

###前提・実現したいこと
chromeやfirefoxでは正しく動くのですがIE11だとエラーになります。
解決方法を教えて下さい。
よろしくおねがいします。
###発生している問題・エラーメッセージ
IE11上でF12を押してデバッガーを見ると

doc = iframe.contentWindow.document;
アクセスが拒否されました。

と表示されています。
###該当のソースコード

<iframe id="sample" src="about:self"></iframe> <script> var iframe = document.getElementById('sample'), doc = iframe.contentWindow.document; doc.open(); doc.write('test'); doc.close(); </script>

###補足情報(言語/FW/ツール等のバージョンなど)
実行環境はWindows7です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

回答ありがとうございます
しかし、お二方の回答を試してみた結果はどちらも動きませんでした。
kaputarosさんの回答の方は「アクセスが拒否されました。」
とデバッカーに表示されます。
think49さんの回答の方はフレーム内部に
「情報アイコン
この Web ページは表示できません
可能性のある原因:
この Web ページのコンテンツまたはファイルを表示するには、現在このコンピューターにインストールされていないプログラムが必要です。」
と表示されました。
但し、think49さんの回答の「about:self」で拒否されているという答えはその通りで

<iframe id="sample" src="test.html"></iframe> の用に関係ないページにしたり、また、 <iframe id="sample"></iframe> の用にsrc指定自体を取り去った場合は正しく動きました。

「about:self」ですが、これは
http://please-sleep.cou929.nu/about-friendly-iframe.html
http://kakakazuma.hatenablog.com/entry/2015/03/10/221117
上記ページを参考にしました。
私自身も「about:self」が何なのかよくわかりませんが
とりあえず動くようになったのでこれでよしとしました。
ありがとうございました。

投稿2016/05/09 11:28

answer

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

about:self

about:self で拒否されている気がしますね。
about:blank ならわからなくもありませんが、about:self とは何でしょう?
(いずれにしても、about:* 系は実装依存なページを返すので使うべきではないと思いますが)

Data URI scheme

Data URI scheme を使えば解決しそうな気がします。

HTML

1<iframe src="data:text/html;base64,PCFET0NUWVBFIGh0bWw+DQo8dGl0bGU+dGVzdDwvdGl0bGU+"></iframe>

iframe要素

最も、一から要素を作るなら DOM で同一ドキュメント上に要素ノードを生成する方が良い場合が多いですね。
iframe要素は HTML5 から導入された sandbox 属性を使うと面白い事が出来そうですが。

Re: answer さん

投稿2016/05/09 00:57

編集2016/05/09 02:35
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

IEだとcontentDocumentプロパティがないそうです。
IEは

frames[ フレームのid ].document

とすれば取得できるみたいです。

参考:
JavaScriptの動かないコード (中級編) iframe内にDOMアクセスできないエラー

投稿2016/05/09 00:47

kaputaros

総合スコア1844

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2016/05/09 01:22

> think49さん あらら、日時の確認を忘れてました。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問