[原创]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 相关文章推荐
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
Jun 07 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
JavaScript浮点数及运算精度调整详解
Oct 21 Javascript
Ajax的概述与实现过程
Nov 18 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
May 12 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
Feb 13 Javascript
selenium+java中用js来完成日期的修改
Oct 31 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JavaScript 常用函数库详解
2009/10/21 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
python中plot实现即时数据动态显示方法
2018/06/22 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
西部世纪.net笔试题面试题
2014/04/03 面试题
新学期校长寄语
2014/01/18 职场文书
请假条范文大全
2014/04/10 职场文书
和睦家庭事迹
2014/05/14 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
世界遗产的导游词
2015/02/13 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
整改通知书
2015/04/20 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书