[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告


Posted in Javascript onMay 11, 2016

本文主要介绍一种新的广告后加载的方式,支持自定义HTML广告、百度联盟广告和谷歌联盟广告。这种方式在页面加载完成后执行,不影响内容的显示,对用户更加友好。

我们在网站上放置广告,最简单的方法就是把JS代码,插入指定的位置,这样带了后果就是,页面按照顺序加载,偶尔一条广告代码卡住,整个页面都会卡住,给用户带来的体验是极差的。

那么怎么解决这种问题呢?先说一下原理,在我们的页面上先预留一些占位符,为了不影响页面内容的加载,我们在页面的底部引入JS处理,逐个把占位符替换成相应的广告。

下面我们看具体的实现步骤:

一、在页面上放置占位符,其实就是一个span标记

<span id="ads_one" class="jbTestPos"></span>

<span id="ads_two" class="jbTestPos"></span>

<span id="ads_three" class="jbTestPos"></span>

二、编写独立的JS脚本代码:jbLoader.js

jbMap = window.jbMap || {};

function jbViaJs(locationId) {

    var _f = undefined;

    var _fconv = 'jbMap[\"' + locationId + '\"]';

    try {

        _f = eval(_fconv);

        if (_f != undefined) {

            _f()

        }

    } catch(e) {}

}

function jbLoader(closetag) {

    var jbTest = null,

    jbTestPos = document.getElementsByTagName("span");

    for (var i = 0; i < jbTestPos.length; i++) {

        if (jbTestPos[i].className == "jbTestPos") {

            jbTest = jbTestPos[i];

            break

        }

    }

    if (jbTest == null) return;

    if (!closetag) {

        document.write("<span id=jbTestPos_" + jbTest.id + " style=display:none>");

        jbViaJs(jbTest.id);

        return

    }

    document.write("</span>");

    var real = document.getElementById("jbTestPos_" + jbTest.id);

    for (var i = 0; i < real.childNodes.length; i++) {

        var node = real.childNodes[i];

        if (node.tagName == "SCRIPT" && /closetag/.test(node.className)) continue;

        jbTest.parentNode.insertBefore(node, jbTest);

        i--

    }

    jbTest.parentNode.removeChild(jbTest);

    real.parentNode.removeChild(real)

}

 

jbMap['ads_one'] = function() {

 document.writeln('<a href="https://3water.com/" target="_blank">三水点靠木</a>');

};

 

jbMap['ads_two'] = function() {

 document.writeln('<scr'+'ipt type="text/javascript">var cpro_id = "u336546";</script><script src="http://cpro.baidustatic.com/cpro/ui/c.js" type="text/javascript"></scr'+'ipt>');

};

 

jbMap['ads_three'] = function() {

 document.writeln('<scri'+'pt async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></scri'+'pt><ins class="adsbygoogle" style="display:inline-block;width:300px;height:250px" data-ad-client="ca-pub-1247620132145618" data-ad-slot="2253650178" data-override-format="true" data-page-url="https://3water.com"></ins><scri'+'pt>(adsbygoogle = window.adsbygoogle || []).push({});</s'+'cript>');

};

注意:jbMap是放置广告的数组,数组的Key和Span标记的ID是对应的,我们可以在这个JS中按照这种形式添加自己的广告。这种广告加载方式,支持自定义的HTML广告、百度联盟广告、谷歌联盟广告,这里都给大家做了演示。

三、在页面底部中引入JS,调用jbLoader加载广告

<script type="text/javascript" src='js/jbLoader.js'></script>

<script>jbLoader();</script><script class="closetag">jbLoader(true);</script>

<script>jbLoader();</script><script class="closetag">jbLoader(true);</script>

<script>jbLoader();</script><script class="closetag">jbLoader(true);</script>

注意:格式必须是如上这种格式,有几个占位符,就添加几个<script>jbLoader();</script><script class="closetag">jbLoader(true);</script>

不要问小编为什么要这样调用,其实小编也研究了一下:
1.第一次jbLoader()是为了写标记,第二次jbLoader(true)是为了替换标记。
2.用两个<script>是为了第二次调用能取到相应的元素。
3.有几个占位符就写几行script是为了互不影响,各显示各的。

总之:好多大网站都在使用这种方法,大家放心用好了。至此,就完成了页面广告后加载的调用。

Javascript 相关文章推荐
JAVASCRIPT IE 与 FF中兼容问题小结
Feb 18 Javascript
javascript五图轮播切换实用版
Aug 17 Javascript
js动态设置div的值下例子
Oct 29 Javascript
JS+CSS实现简易的滑动门效果代码
Sep 24 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 Javascript
JS实现复制功能
Mar 01 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
Apr 01 Javascript
浅谈Vue的加载顺序探讨
Oct 25 Javascript
基于vue循环列表时点击跳转页面的方法
Aug 31 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 #Javascript
javascript简单判断输入内容是否合法的方法
May 11 #Javascript
解析JavaScript面向对象概念中的Object类型与作用域
May 10 #Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
May 10 #Javascript
JavaScript中的原型prototype完全解析
May 10 #Javascript
简单解析JavaScript中的__proto__属性
May 10 #Javascript
Web Uploader文件上传插件使用详解
May 10 #Javascript
You might like
php 常用类整理
2009/12/23 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
使用laravel的migrate创建数据表的方法
2019/09/30 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
美国折扣网站:jClub
2017/08/07 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
5.1手机促销活动
2014/01/17 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
融资租赁计划书
2014/04/29 职场文书
新书发布会策划方案
2014/06/09 职场文书
金融管理专业求职信
2014/07/10 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
初中毕业生感言
2015/07/31 职场文书
redis限流的实际应用
2021/04/24 Redis
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python