[原创]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 相关文章推荐
JS无限树状列表实现代码
Jan 11 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
js获取UserControl内容为拼html时提供方便
Nov 02 Javascript
javascript中键盘事件用法实例分析
Jan 30 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
javascript+html5+css3自定义提示窗口
Jun 21 Javascript
vue检测对象和数组的变化分析
Jun 30 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
Nov 22 Javascript
小程序如何支持使用 async/await详解
Sep 12 Javascript
vue 实现input表单元素的disabled示例
Oct 28 Javascript
vue数据响应式原理知识点总结
Feb 16 Javascript
JS常用排序方法实例代码解析
Mar 03 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP 类型转换函数intval
2009/06/20 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
JQuery遍历元素的父辈和祖先的方法
2016/09/18 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python引用模块和查找模块路径
2016/03/17 Python
Python3对称加密算法AES、DES3实例详解
2018/12/06 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
python中的itertools的使用详解
2020/01/13 Python
python 爬取疫情数据的源码
2020/02/09 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
保安队长职务说明书
2014/02/23 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
单位委托书范本
2014/04/04 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
2014年技术部工作总结
2014/12/12 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
golang中的空接口使用详解
2021/03/30 Python
python中的被动信息搜集
2021/04/29 Python
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python