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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

1回答

1433閲覧

monacaのiosアプリでAdGenerationの広告を開けられるようにしたい

hitomi_

総合スコア10

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2020/08/16 08:09

https://github.com/AdGeneration/SDK/wiki/Banner_Ad_Monaca
このページを参考に広告を設置することはできたのですが、iosで見てみると表示はされるもののクリックすることができません。
以前iosでaタグでリンクを開けない不具合があり、すべて以下のようにjavascriptに変更しました。

javascript

1 function onClickBack(){ 2 location.href = 'data.html'; 3 }

AdGenerationの広告もjavascriptを見るとaタグを使っているようなので、これをjavascriptに書き換えたいのですが、どこをどう書き換えたらいいのかわかりません。

html

1<div id="adg1" style="position:fixed;left:0px;bottom:0px;width:100%;height:auto;z-index:99;"></div> 2<script language="javascript" type="text/javascript"> 3 //読み込み時処理 4 $(document).ready( function(){ 5 Load(); 6 var userAgent = navigator.userAgent.toLowerCase(); 7 if (userAgent.indexOf("android") != -1){ 8 // Android の時の処理 9 makeADGTag('118795','adg1', '100%', 'auto'); 10 } else if ((userAgent.indexOf("iphone") != -1)||(agent.indexOf("ipad") != -1)){ 11 // iOS(iPhone、iPad)の時の処理 12 makeADGTag('118814','adg1', '100%', 'auto'); 13 } 14 }); 15</script> 16

javascript

1// Ad Generationの広告枠を作成するJavaScriptタグを生成します。 2function makeADGTag(adid , divid){ 3 var adg = document.getElementById(divid); 4 var script = document.createElement('script'); 5 script.type = 'text/javascript'; 6 // async=trueにすることによって非同期に対応されます 7 script.src ='https://i.socdm.com/sdk/js/adg-script-loader.js?id=' + adid + '&adType=SP&displayid=0&targetID=adg_' + divid + '&async=true'; 8 if(adg != null){ 9 adg.appendChild(script); 10 } 11 adg.style.display = 'none'; 12 var count = 0; 13 var timer = setInterval(function checkAd(){ 14 count++; 15 if(count > 100){ 16 clearInterval(timer); 17 return; 18 } 19 if(checkADGTag(adg) === true){ 20 clearInterval(timer); 21 adg.style.display = 'inline'; 22 } 23 },100); 24} 25 26// aタグを探す 27function checkADGTag(obj){ 28 var links = obj.getElementsByTagName('a'); 29 var frms = obj.getElementsByTagName('iframe'); 30 if(links.length > 0){ 31 makeADGLink(links); 32 return true; 33 } 34 35 var res = false; 36 for(var i = 0; i < frms.length; i++){ 37 if(checkADGTag(frms[i].contentWindow.document) === true){ 38 res = true 39 } 40 } 41 return res; 42} 43 44// aタグを置換する 45function makeADGLink(arr){ 46 for(var i = 0; i < arr.length; i++){ 47 (function(a) { 48 var href = a.href; 49 a.href = '#'; 50 a.onclick = function(){ 51 var ref = window.open(href, '_system'); 52 return false; 53 } 54 })(arr[i]); 55 } 56}

広告をクリックしてjavascriptでページを開けるようにするにはどうしたら良いでしょうか、教えてください。

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

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

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

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

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

guest

回答1

0

自己解決

下記のように書き換えたところ、ほとんどの広告はクリックできるようになりました。
(クリックできない広告もありますが。。)

javascript

1// Ad Generationの広告枠を作成するJavaScriptタグを生成します。 2function makeADGTag(adid , divid){ 3 var adg = document.getElementById(divid); 4 var script = document.createElement('script'); 5 script.type = 'text/javascript'; 6 // async=trueにすることによって非同期に対応されます 7 script.src ='https://i.socdm.com/sdk/js/adg-script-loader.js?id=' + adid + '&adType=SP&displayid=0&targetID=adg_' + divid + '&async=true'; 8 if(adg != null){ 9 adg.appendChild(script); 10 } 11 adg.style.display = 'none'; 12 var count = 0; 13 var timer = setInterval(function checkAd(){ 14 count++; 15 if(count > 100){ 16 clearInterval(timer); 17 return; 18 } 19 if(checkADGTag(adg) === true){ 20 clearInterval(timer); 21 adg.style.display = 'inline'; 22 } 23 },100); 24} 25 26// aタグを探す 27function checkADGTag(obj){ 28 var links = obj.getElementsByTagName('img'); //a→img 29 var frms = obj.getElementsByTagName('iframe'); 30 if(links.length > 0){ 31 makeADGLink(links); 32 return true; 33 } 34 35 var res = false; 36 for(var i = 0; i < frms.length; i++){ 37 if(checkADGTag(frms[i].contentWindow.document) === true){ 38 res = true 39 } 40 } 41 return res; 42} 43 44// aタグを置換する 45function makeADGLink(arr){ 46 for(var i = 0; i < arr.length; i++){ 47 (function(img) { //a→img 48 var href = '#'; 49 img.onclick = function(){ //a→img 50 location.href = href; //var ref = window.open(href, '_system');→location.href = href; 51 return false; 52 } 53 })(arr[i]); 54 } 55}

投稿2020/08/17 02:50

hitomi_

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問