JavaScript/jQuery Userscript阻止重定向
JavaScript/jQuery Userscript to thwart redirect
好的,使用Userscript,我如何检测和停止页面重定向?我没有网页来源。
以下是页面上正常发生的情况:
- 用户单击链接
- 页面通过AJAX与服务器进行检查,发送一些关于点击到PHP页面的链接的数据
- PHP页面显然会回复一些内容,因为随后用户会被重定向到另一个页面
那么,在步骤2中仍然允许AJAX请求通过,我如何通过使用userscript来阻止用户的重定向呢?
据我所知,window.onbeforeunload实际上只有在用户移动页面之前提供一个对话框才有帮助——我不希望这样,我想默默地阻止重定向。
编辑:我认为window.stop()可以阻止页面更改,但检测它是否会更改可能是一个挑战。。。
document.location.href = 'http://www.something.com';
window.stop();
似乎有效。但是检测到位置.href正在改变?
默认情况下,普通链接是加载另一个页面的请求,该请求与单击链接后可能执行的任何其他操作无关。然而,您不必使用普通类型的链接;看看这个:
<a style="color:#0000ff;text-decoration:underline;cursor:pointer;"
onclick="window.name='here';window.open('http://www.example.com/newpage.htm',
'here');">New Page</a>
该HTML代码将看起来与普通链接完全一样,并且与普通链接工作完全一样,以便将新页面加载到当前页面中。但它实际上是一个JavaScript*构造,这意味着你可以拦截它来做其他事情,例如:
<a style="color:#0000ff;text-decoration:underline;cursor:pointer;"
onclick="window.name='here';intercept();">New Page</a>
现在,您可以编写一个名为"intercept()"的JavaScript函数来决定是否加载新页面(执行AJAX调用)。如果你决定加载新页面,那么你只需要在AJAX回调函数中这样做:
window.open('http://www.example.com/newpage.htm','here');
如果页面上有多个链接,只需在intercept()
函数调用中指定一个参数(即intercept('newpage.htm');
、intercept('altpage.htm');
或intercept('diffpage.htm');
),然后在intercept函数中简单地将接收到的字符串放入全局变量中,这样在AJAX回调函数中的window.open()
函数调用就可以使用全局变量打开正确的新页面。
*当然,用户必须在浏览器中启用JavaScript,链接才能工作。但是,AJAX也需要启用JavaScript,所以这不是问题。
- 通过javascript重定向html传递php变量
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 使用angular重定向到html页面
- 如何在chrome扩展中重定向到html页面
- 无法从jquery Mobile导航栏重定向到另一个页面
- ng视图外的链接重定向到ng视图内的页面
- 在phonegap应用程序内部重定向不起作用
- CORS-重定向到第二个GET正在接收的页面
- AJAX不会在文件上传后重定向到网页-POST方法
- 重定向时角度刷新浏览器
- 通过链接重定向不;我不在jstree中工作
- 根据select选项元素将表单重定向到不同的URL
- 通过JQuery重定向到另一个页面
- 重定向到“父窗口”
- 重定向iFrame中的父URL
- PHP-如何重定向到同一页面并更改DOM's
- chrome.tabs.update() 重定向到 'chrome-extension://invalid/'
- 我们如何在不更改url的情况下使用锚点点击从一个页面重定向到另一个页面
- 使用AngularJS中的UI路由器将状态重定向到默认子状态
- JavaScript/jQuery Userscript阻止重定向