2012-01-27 48 views
1

其中一个异地第三方小部件的脚本在执行期间崩溃,并将我主页上的所有流量重定向到他们的主页。重定向的第三方脚本的全局拦截器

由于我不能杀死他们,我要么必须杀死脚本,要么找出一种方法来杀死第三方JavaScript可能使浏览器重定向的任何尝试。我发现的最有希望的事件是.unload()window.onbeforeunload,我的想法是希望检查GET请求,然后验证URL是否与我的页面上的任何有效链接不匹配,除非我不知道考虑到它不受限于页面上的任何点击或操作,但如何获得事件的GET值,但在第三方的.js中是伪造的东西或其他东西?

任何人都有运气找出这样的解决方案吗?

+0

为什么不修补第三方小部件,使其不重定向?我不认为有任何方法可以“验证”JavaScript的其他部分可能设置window.location的所有地方。 – jfriend00 2012-01-27 22:50:28

+0

,因为它是企业级应用程序的第三方专有Web服务接口 - 它实际上不应该重定向,他们的事件报告也会像这样:“我们不知道发生了什么事或者为什么数百万用户被重定向到我们的主页一个下午“试图阻止未来再次发生任何第三方服务。 – HansOg 2012-01-28 21:22:30

回答

0

我不知道拦截第三方javascript可能设置的所有可能的位置window.location导致重定向并预检它。这不是一种方法,它只是一个设置为没有方法替换/覆盖的属性。

页面卸载事件只是让您有机会询问用户他们是否真的想离开此页面,但它无法访问新的页面目的地。

我唯一能想到的就是保持一个全局变量,它包含一个默认为false的布尔值。在所有可能的地方,您可能会更改自己的代码中的页面,将该布尔值设置为true。在onbeforeunload处理程序中,检查全局变量以查看它是否代码执行。如果它不是你的代码所做的,你会从onbeforeunload返回一条消息,这样用户会被提示是否真的要离开。但是,你无法阻止它(这是故意的浏览器设计)。如果他们对提示说“是”,他们会将页面留给新的目的地。

如果您或其他人能够真正弄清楚为什么第三方无意中导致重定向,那么也许您可以专注于确保条件不再发生,但您没有给我们提供任何信息我们无法真正帮助。

+0

故意不讨论任何解决方案,他们的脚本问题是减轻第三方snafu的想法,可能导致执行期间重定向。对不起,如果不明确。我感谢你的回应!我希望我能够在前端建立一个完全可怕的通用后卫,但实施这样的解决方案对于我来说目前是不可行的。 – HansOg 2012-01-29 01:51:18