1

该网站设置为选择同意 cookie,但是当第一次访问者单击接受 cookie 按钮时,除非刷新整个页面,否则不会加载 adsense 代码。

有没有办法在点击 cookie 接受按钮后实现加载广告,而不必刷新整个页面?

使用此 cookie 同意 jquery 插件:IHaveCookies

这是我正在使用的允许加载 adsense 的代码的一部分:

    $(document).ready(function() {
    $('body').ihavecookies(options);

if ($.fn.ihavecookies.preference('ads') === true) {
    var src = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
    var newScript = document.createElement("script");
    newScript.type = "text/javascript";
    newScript.setAttribute("async", "true");
    newScript.setAttribute("src", src);
    document.body.appendChild(newScript);
}

上面的代码确实有效,但在页面刷新之前它不允许广告出现。是否可以在上述代码中添加“刷新”属性以使广告加载到“ ihavecookies.preference('ads') === true) ”而不刷新页面?

可以在此处查看我实现此功能的网站

仅供参考....目前没有为欧盟或加利福尼亚访问者加载广告(但这是一个单独的问题,本主题不解决)

4

3 回答 3

6

与您使用的插件没有直接关系,但我的回答有望引导您朝着正确的方向前进。首先,有两个 AdSense 帮助页面可能会对您有所帮助:

Google 发布商广告代码中的广告个性化设置:https: //support.google.com/adsense/answer/7670312

广告个性化设置的广告代码示例:https: //support.google.com/adsense/answer/9042142

我正在将我的自定义 cookie 同意解决方案与 AdSense 一起使用(我使用带有非个性化选项的自动广告),这就是我正在做的事情:

1.我将以下代码放在<head>标签之间,在将显示广告的页面上:

编辑:仅在获得同意的情况下/之后将以下内容添加到您的页面。(感谢@阿凡达)

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>(adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=1;</script>

这会加载 AdSense JS 文件,但会暂停广告加载,因此不会放置任何 cookie。

2.在我控制显示/隐藏同意横幅的 JS 文件中,我将以下代码添加到这些操作中:a) 用户通过单击 OK 表示同意,b) 如果先前已同意,则加载新页面:

(adsbygoogle=window.adsbygoogle||[]).requestNonPersonalizedAds=1;
(adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=0;
(adsbygoogle=window.adsbygoogle||[]).push({google_ad_client:'ca-pub-YOUR-ADSENSE-ID',enable_page_level_ads:true});

如果您使用个性化广告,您可以删除第一行。

在其他情况下不加载广告(例如,用户什么都不做,用户点击 REJECT,用户之前拒绝的新页面加载)。我确实放置了一个 cookie 来跟踪拒绝,以便在每次页面加载时都不会显示同意横幅。

于 2020-04-13T05:58:01.657 回答
1

最简单的方法之一:

  1. 将所有 adsense 脚本标签更改为type="text/plain"
  2. 访问者接受 cookie 后,将类型更改为type="text/javascript"
  3. 执行代码

您还希望存储 cookie 接受,以便下次可以立即触发 adsense。


也可以看看:

于 2021-05-29T05:35:38.163 回答
0

这太棒了,非常感谢!如果您在本地托管 adsbygoogle.js,则在用户接受之前不会与美国建立非法连接。

 <script async src="adsbygoogle.js"></script>
 <script>(adsbygoogle=window.adsbygoogle||[]).pauseAdRequests=1;</script>

在德国,即使在未经用户许可的情况下从美国加载谷歌字体现在似乎也是非法的:https ://www.itmagazine.ch/artikel/76437/Deutsches_Gericht_erklaert_Einbindung_von_Google_Fonts_als_rechtswidrig.html

这是一种仅在允许的情况下加载分析的方法:https ://stackoverflow.com/a/45838784/12668719

更新:我已经测试过了,不幸的是它仍然连接到美国 不幸的是它仍然连接到美国

还有什么想法吗?仅在获得同意后才加载 Google Adsense、Analytics 和 Youtube

更新:同意后动态加载 Google Adsense OK:setTimeout("adsenseladen()", 1);

 <script type="text/javascript">
 function adsenseladen() {
 var script = document.createElement('script');
 script.type = 'text/javascript';
 script.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
 document.body.appendChild(script);
 }
 </script>


 <ins class="adsbygoogle"
 style="display:block"
 data-ad-client="ca-pub-##########"
 data-ad-slot="##########"
 data-ad-format="auto"
 data-full-width-responsive="true"></ins>

 <script>
 (adsbygoogle = window.adsbygoogle || []).push({});
 </script>
于 2022-02-02T15:21:08.620 回答