[原创]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 相关文章推荐
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
Aug 31 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 Javascript
node.js中的fs.fchmodSync方法使用说明
Dec 16 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
jQuery实现文件上传进度条特效
Aug 12 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
js识别uc浏览器的代码
Nov 06 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
Bootstrap实现input控件失去焦点时验证
Aug 04 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
js实现楼层导航功能
Feb 23 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
May 14 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下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
网页挂马方式整理及详细介绍
2016/11/03 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
js date 格式化
2017/02/15 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
微信小程序实现倒计时补零功能
2018/07/09 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
[01:28]一分钟告诉你DOTA2 TI9不朽宝藏Ⅱ中有什么!
2019/07/09 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
详解python中requirements.txt的一切
2017/03/03 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python清除函数占用的内存方法
2018/06/25 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
python字典的值可以修改吗
2020/06/29 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
国际残疾人日广播稿范文
2014/10/09 职场文书
教师辞职书范文
2015/02/26 职场文书
党性修养心得体会2016
2016/01/21 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫