如何执行用户的广告拦截器阻止的外部JS文件

时间:2016-05-01 21:12:00

标签: javascript adblock

我们使用外部服务(Monetate)为我们的网站提供JS服务,这样我们就可以执行特定的表示层网站更新,而无需经过网站重新部署的过程 - 在我们的案例中这是一个非常耗时的事情,单一的过程,我们每月只能做一次。

但是,在浏览器中使用广告拦截器的用户看不到其中一些表示层更新。这可能会对他们对网站的体验产生负面影响,因为我们有时会包含那些用户可能不知道的时间敏感的促销活动。

为了解决这个问题,我想要复制Monetate正在服务的JavaScript文件,并将其托管在与该站点不同的基础架构上。这样,我们需要对其进行更新,我们可以根据需要进行更新,而无需重新部署完整的站点。

但是,我想知道是否有办法解决阻塞Monetate JS文件并以某种方式从我们自己的JS代码执行远程Monetate JS文件,以至于adblockers无法阻止它?这样就无需复制文件。

2 个答案:

答案 0 :(得分:1)

如果广告拦截器阻止该文件,则可能会用于投放广告。事实上,您对时间敏感型促销的描述听起来非常像广告,不是外部提供商,而是适用于您自己的网站

由于广告拦截器通常与网址匹配,因此最简单的解决方案确实是重新托管此文件,如果可能,则使用其他名称。您也可以使用等效于<?php readfile('http://monetdate.com/file.js');或apache的mod_rewrite来实现一个简单的代理,而不是托管静态副本。虽然这会增加加载时间,但如果远程主机出现故障可能会失败,这意味着客户端将始终获得该文件的最新版本。

除了使用不同的URL,没有客户端解决方案 - 浏览器中包含广告拦截器(或其扩展名),并且您无法出于正当理由修改该代码。

请注意,如果脚本确实用于投放广告,广告拦截器也可能决定阻止您的网址。

答案 1 :(得分:0)

如果可能会将Adblock列入黑名单,那么您就无法做任何事情。

我认为自托管Monetate脚本需要通过不时检查新版本来保持更新(保持它可能会成为痛苦的屁股)。

我认为一个好的解决方案是通过明确的信息通知您的用户该限制。

或者,您可以与Monetate联系并寻求解决方案。