[原创]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 相关文章推荐
兼容ie和firefox js关闭代码
Dec 11 Javascript
JavaScript中的运算符种类及其规则介绍
Sep 26 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
Bootstrap前端开发案例二
Jun 17 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 Javascript
浅析vue component 组件使用
Mar 06 Javascript
JS实现的找零张数最小问题示例
Nov 28 Javascript
Node.js使用Koa搭建 基础项目
Jan 08 Javascript
对TypeScript库进行单元测试的方法
Jul 18 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 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代码
2012/07/17 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
监控 url fragment变化的js代码
2010/04/19 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
Python中threading模块join函数用法实例分析
2015/06/04 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
Python中如何引入第三方模块
2020/05/27 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
用python读取xlsx文件
2020/12/17 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
会议邀请函范文
2014/01/09 职场文书
考试不及格检讨书
2014/01/09 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
志愿者活动总结范文
2014/04/26 职场文书
欢迎标语大全
2014/06/21 职场文书
爱牙日活动总结
2014/08/29 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
小孩不笨观后感
2015/06/03 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技