最近刚把自己的博客封装成了小程序,但在测试的过程中出现了点小问题,如上图:
页面iframe不支持引用非业务域名 https://googleads.g.doubleclick.net,请重新配置。
分析发现,Google Adsense的代码,是需要引入JS文件的,引入Adsense的JS代码后,就会自动执行并iframe一个页面,这个页面访问的域名因为没有在小程序后台添加到业务域名(实际在小程序后台也没有办法添加)。
解决办法:
1、去掉网站的google adsense代码;
2、用代码来判断微信小程序环境,发现是微信小程序环境就不引入adsense的js代码。这样才能规避微信小程序下页面提示「域名非法」而无法打开的问题;
可以将下面代码放到网站上,每个页面都需要放。
下面的google客户号ca-pub-6518544445186333需要修改为自己的。
<ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="auto"
data-ad-client="ca-pub-6518544445186333" data-ad-slot="3773436664" data-full-width-responsive="false"></ins>
<script src="//res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
function dynamicLoadJs(url, callback) {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.crossorigin = 'anonymous';
if (typeof (callback) == 'function') {
script.onload = script.onreadystatechange = function () {
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") {
callback();
script.onload = script.onreadystatechange = null;
}
};
}
head.appendChild(script);
}
function showAdGoogle() {
var ua = navigator.userAgent.toLowerCase();
var isInMp = false;
//引入的js文件地址
let url = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6518544445186333';
dynamicLoadJs(url, function () {
(adsbygoogle = window.adsbygoogle || []).push({});
});
}
if (ua.match(/MicroMessenger/i) == "micromessenger") {
wx.miniProgram.getEnv((res) => {
if (res.miniprogram) {
isInMp = true;
} else {
showAdGoogle();
}
})
} else {
showAdGoogle();
}
</script>
评论