質問: monacaでnend広告を開くとアプリに戻れなくなりまして、過去のスタックオーバーフローの質問を見たりネットの情報を見たりして試行錯誤しているのですがうまくいきません。 以下の二つのサイトを見て作成しております。 monacaでnend広告を別ウインドウで開く方法 このサイトの通り作成したのですが、広告をクリックしても起動したアプリに戻れないため、window.openのプログラムが走ってないのかなと思いました。それともこのプログラムでは実装できないのでしょうか? また、私のアプリは広告をクリックしても反応が悪くて数秒後にサイトが開くという形となっています。 上記のプログラムでクリック後に早くサイトを開かすためにはどのようにしたらよろしいでしょうか? 以上の2点をご教授頂けたら幸いです。よろしくお願いします。
回答: おそらく`setTimeout()`で指定した時間内に広告が表示されないために`a`タグが取得できず、既存ブラウザではなく`Cordova WebView`を開いて表示している可能性があります。 実際にMonacaデバッガーなどで`a`タグを取得しているか検証した方がよろしいかと思います。 反応が悪い原因は、 1.`Cordova WebView`を開く場合に多少時間を要する。 2.通信速度が遅い。 のいずれかが考えられます。 `a`タグを取得できるまで何回か繰り返すことで回避できるかと思います。 ``` addEventListener("load", function() { var count = 0; var timer = setInterval(function() { var nendAdAnchors = []; var nendAdSpace = document.querySelector("div[id^=nend_adspace]"); if (nendAdSpace != null) { nendAdAnchors = nendAdSpace.querySelectorAll("a"); } if (nendAdAnchors.length > 0) { clearInterval(timer); for (var i = 0; i < nendAdAnchors.length; i++) { (function() { var hrefShelter = nendAdAnchors[i].href; nendAdAnchors[i].removeAttribute("href"); nendAdAnchors[i].addEventListener("click", function() { var w = window.open(hrefShelter, "_system", "location=no"); }, false); })(); } } else { count++; console.log(count); if (count > 4) { clearInterval(timer); } } }, 3000); }, false); ```