[原创]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 操作Word和Excel的实现代码
Oct 26 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
Mar 20 Javascript
jQuery中$(function() {});问题详解
Aug 10 Javascript
angularjs学习笔记之完整的项目结构
Sep 26 Javascript
laypage分页控件使用实例详解
May 19 Javascript
AngularJS中controller控制器继承的使用方法
Nov 03 Javascript
vue里面父组件修改子组件样式的方法
Feb 03 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 Javascript
ng-repeat指令在迭代对象时的去重方法
Oct 02 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 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
图书管理程序(一)
2006/10/09 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
2014年应届大学生自我评价
2014/01/09 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015年度班主任自我评价
2015/03/11 职场文书