使用JQuery Mobile在移动网站上点击成人广告

时间:2012-07-19 15:08:26

标签: jquery-mobile advertising

我在使用Exoclick成人广告在使用JQuery UI的移动网站上做广告时遇到问题。

我不知道我在这里可以透露多少,直到它进入“成人”太远,我不能再在这里发布了。

Exoclick横幅显示,但只有一次!在网站内导航不再是同一个广告(我们有两个广告,底部和顶部。每个广告仅在每次网站遍历时加载ONCE)。如果使用浏览器的刷新功能(“F5”)进行刷新,它们将再次加载......但只能加载一次。

好吧,Exoclick给了我一个这样的片段:

<!-- BEGIN ExoClick.com Ad Code -->
<script type="text/javascript" src="http://syndication.exoclick.com/ads.php?type=300x50&login=<username>&cat=110&search=&ad_title_color=0000cc&bgcolor=FFFFFF&border=0&border_color=000000&font=&block_keywords=&ad_text_color=000000&ad_durl_color=008000&adult=0&sub=&text_only=0&show_thumb=&idzone=<zone id>&idsite=<site id>"></script>
<noscript>Your browser does not support JavaScript. Update it for a better user experience.</noscript>
<!-- END ExoClick.com Ad Code --></div>

问题是,这在静态网站上完美运行,但由于JQuery Mobile使用AJAX获取所有内容的性质,脚本会被多次加载到浏览器的执行上下文中(至少这是我想要发生的事情) !)到最后......甚至不再执行了?

我已经想到了:

  • 缓存Exoclick广告脚本的输出(对于JS,有类似“outputcache”的内容吗?)
  • 停用Ajax

我尝试停用Ajax请求,但由于某种原因,这没有做任何事情:

    <script>
    $(document).bind("mobileinit", function(){
        $.mobile.ajaxEnabled = false;
    });
    </script>

2 个答案:

答案 0 :(得分:1)

停用Ajax应该可以工作:

 $(document).bind("mobileinit", function () {


             $.mobile.addBackBtn = false;
             $.mobile.ajaxEnabled = false;
             $.mobile.ajaxLinksEnabled = false;

         });

另一方面,您可以在每次ajax成功时刷新/重新加载脚本

$('html').ajaxSuccess(function() {
  //reload your script using js, plenty of that on google
}); 

答案 1 :(得分:0)

我做到了...... @bobek间接地把我带到了这个答案。

我所做的是创建一个包含广告的隐形div。然后,在pageinit上,我窃取了div并将其从DOM中删除。 div现在将由Exoclick制作一个iframe。

然后,在exoclick没有脚本的情况下,我将它插回到每个页面init事件的dom中......

为了防止脚本被插回到dom中,在服务器端我检查X-REQUESTED-WITH标头。如果是XMLHttpRquest,我不发送广告。

这就是它在代码中的样子:

网站上的任何地方的临时广告展示位置:

<div id="ads">
    <div style="display: none" id="topad">
        <?php require("./_topbannerb.php"); ?>
    </div>
    <div style="display: none" id="bottomad">
        <?php require("./_bottombannerb.php"); ?>
    </div> 
</div>

两个PHP文件包含exoclick标签。没别了。

头标记中的脚本:

<script>
ads = "";
first = true;

$(document).bind('pageinit', function() {

if (first) {
    ads = $("#ads");
    ads.remove();
}

first = false;

$.each($(".adt"), function(i, v) {
    $(v).append($(ads).children("#topad").first().children("div").clone())
});

$.each($(".adb"), function(i, v) {
    $(v).append($(ads).children("#bottomad").first().children("div").clone())
    });
}); 
</script>

然后,广告应该放在最后:

<div class="adt"> </div>

该脚本会自动插入每个广告展示位置。这里我有两个不同的广告区域:顶部和底部。两者都没有区别,除了exoclick如何在后面处理它们。