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

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

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

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

Q&A

解決済

1回答

9182閲覧

js読み込みの際はnullになるが、devツールのコンソールではnullにならない

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2018/03/08 02:19

編集2018/03/08 11:51

js読み込みの際はnullになるが、devツールのコンソールではnullにならない

解決ソース

"use strict"; (function () { let iframes = document.querySelectorAll("iframe"); iframes[0].onload = function(){ let dropzoneFrame = document.querySelector('#clientframe'); let dFWindow = dropzoneFrame.contentWindow; let allElements = dFWindow.document.body.querySelectorAll('*'); console.log(dFWindow); } })();

解決後の追記

新たに質問を立てました.なぜ即実行関数とhtmlタグ指定の組み合わせの時だけ動くのか
上記のベストアンサーで気づいたことを追記します.
この質問の該当ソースに載せ忘れたiframeで読み込んでいるsandbox.htmlでもapplication.jsを読み込んでいました.エラーの正体はこいつでした.

実現したいこと

ファイルの読み込みの際も下記のエラーが出ないようにしたいです。
どうすれば良いかご教示お願いいたします。

Cannot read property 'contentWindow' of null

発生している問題

idがclientframeのiframeを読み込むために、contentWindowを使ったが、Cannot read property 'contentWindow' of nullエラーが発生する。
ブラウザのコンソールでdocument.querySelector('#clientframe').contentWindow;を試してみるとしっかり値が返ってくる。

該当のソース

  • application.js

lang:js

1"use strict"; 2window.onload = function () { 3 let dropzoneFrame = document.querySelector('#clientframe'); 4 let dFWindow = dropzoneFrame.contentWindow; 5 let allElements = dFWindow.document.body.querySelectorAll('*'); 6}
  • index.html

lang:html

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="utf-8"> 5 <title>dnd</title> 6 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" 7 crossorigin="anonymous"> 8 </head> 9 <body> 10 <div class="container"> 11 <div class="row"> 12 <div class="col-md-3"></div> 13 <div class="col-md-6"> 14 <iframe id="clientframe" disablehistory="true" src="./sandbox.html" style="visibility: visible; width: 700px; height: 700px; transform-origin: 0px 0px 0px; transform: scale(0.535172);"></iframe> 15 </div> 16 </div> 17 </div> 18 <script src="./application.js"></script> 19 </body> 20</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

iframe のロードイベントを待ってみては。

【iframeのonloadのタイミングでiframeのソースを確認する - みかづきブログ その3】
http://kimizuka.hatenablog.com/entry/2015/09/16/000000

【jQuery iframeの読み込み完了後のタイミングで処理を実行する方法 | Stronghold Archive】
https://zxcvbnmnbvcxz.com/jquery-iframe-loaded/index.html

投稿2018/03/08 02:26

kei344

総合スコア69407

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

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

退会済みユーザー

退会済みユーザー

2018/03/08 03:38

ありがとうございます!解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問