[原创]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的9个陷阱及评点分析
May 16 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
电子商务网站上的常用的js放大镜效果
Dec 08 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 Javascript
JavaScript判断是否为数组的3种方法及效率比较
Apr 01 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
Mar 08 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
jQuery位置选择器用法实例分析
Jun 28 jQuery
JavaScript小技巧带你提升你的代码技能
Sep 15 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生成WAP页面
2006/10/09 PHP
PHP与SQL注入攻击[二]
2007/04/17 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
php base64 编码与解码实例代码
2017/03/21 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
Javascript 作用域使用说明
2009/08/13 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
JavaScript插入排序算法原理与实现方法示例
2018/08/06 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
JS实现拼图游戏
2021/01/29 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
python logging设置level失败的解决方法
2020/02/19 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
用python发送微信消息
2020/12/21 Python
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
高中体育教学反思
2014/01/24 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
python中super()函数的理解与基本使用
2021/08/30 Python