我在使用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获取所有内容的性质,脚本会被多次加载到浏览器的执行上下文中(至少这是我想要发生的事情) !)到最后......甚至不再执行了?
我已经想到了:
我尝试停用Ajax请求,但由于某种原因,这没有做任何事情:
<script>
$(document).bind("mobileinit", function(){
$.mobile.ajaxEnabled = false;
});
</script>
答案 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如何在后面处理它们。