1

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

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

Exoclick 横幅显示,但只有一次!在站点内导航不会再次出现相同的广告(我们有两个广告,底部和顶部。每个站点每次遍历仅加载一次)。如果您使用浏览器的刷新功能(“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>
4

2 回答 2

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
}); 
于 2012-07-20T16:55:16.477 回答
0

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

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

然后,在没有 exoclick 脚本的情况下,我将其插入到每个页面初始化事件的 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 的标签。没有其他的。

head 标签中的脚本:

<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 如何在后面处理它们之外,两者都没有区别。

于 2012-07-21T15:21:16.603 回答