26834


monacaでnend広告を開くとアプリに戻れなくなりまして、過去のスタックオーバーフローの質問を見たりネットの情報を見たりして試行錯誤しているのですがうまくいきません。  
以下の二つのサイトを見て作成しております。

[monacaでnend広告を別ウインドウで開く方法](https://ja.stackoverflow.com/questions/5969/monaca%E3%81%A7nend%E5%BA%83%E5%91%8A%E3%82%92%E5%88%A5%E3%82%A6%E3%82%A4%E3%83%B3%E3%83%89%E3%82%A6%E3%81%A7%E9%96%8B%E3%81%8F%E6%96%B9%E6%B3%95)

<http://hatopp.wpblog.jp/archives/102>

このサイトの通り作成したのですが、広告をクリックしても起動したアプリに戻れないため、window.openのプログラムが走ってないのかなと思いました。それともこのプログラムでは実装できないのでしょうか？

また、私のアプリは広告をクリックしても反応が悪くて数秒後にサイトが開くという形となっています。  
上記のプログラムでクリック後に早くサイトを開かすためにはどのようにしたらよろしいでしょうか？

以上の２点をご教授頂けたら幸いです。よろしくお願いします。


CC BY-SA 3.0
2016-06-18T08:10:07.807
26829
2016-06-18T12:10:54.450
2017-04-13T12:52:38.920
-1
13367
question
javascript monaca html nend
monacaでnend広告を開くとアプリに戻れなくなる


おそらく`setTimeout()`で指定した時間内に広告が表示されないために`a`タグが取得できず、既存ブラウザではなく`Cordova
WebView`を開いて表示している可能性があります。  
実際にMonacaデバッガーなどで`a`タグを取得しているか検証した方がよろしいかと思います。

反応が悪い原因は、  
1.`Cordova WebView`を開く場合に多少時間を要する。  
2.通信速度が遅い。  
のいずれかが考えられます。

`a`タグを取得できるまで何回か繰り返すことで回避できるかと思います。

[code]

    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);
    
[/code]


CC BY-SA 3.0
2016-06-18T12:10:54.450
26834
2016-06-18T12:10:54.450
9566
26829
answer