[原创]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 相关文章推荐
让Firefox支持event对象实现代码
Nov 07 Javascript
JQuery的Validation插件中Remote验证的中文问题
Jul 26 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
Dec 03 Javascript
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 Javascript
JS实现超简单的仿QQ折叠菜单效果
Sep 21 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
Oct 15 Javascript
响应式表格之固定表头的简单实现
Aug 26 Javascript
移动端利用H5实现压缩图片上传功能
Mar 29 Javascript
Webpack中css-loader和less-loader的使用教程
Apr 27 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
网站用php实现paypal整合方法
2010/11/28 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
PHP模块memcached使用指南
2014/12/08 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
jquery tools系列 expose 学习
2009/09/06 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
由浅入深讲解python中的yield与generator
2017/04/05 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python中对_init_的理解及实例解析
2019/10/11 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
五种Python转义表示法
2020/11/27 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
大学生应聘自荐信
2013/10/11 职场文书
合作意向书模板
2014/03/31 职场文书
调研汇报材料范文
2014/08/17 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
政协委员个人总结
2015/03/03 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
谢师宴家长致辞
2015/07/27 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL