谷歌chrome扩展webrequest拦截
Google chrome extension webrequest intercept
我正在尝试创建一个chrome扩展,将谷歌学者尾注文件转换为引文格式。
chrome.webRequest.onBeforeRequest.addListener(function(reqObj){
if (reqObj.tabId != -1){
var xhr = new XMLHttpRequest();
xhr.open("GET", reqObj.url, true);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
parseEndnote(xhr.responseText); //Parse the endnote and create the citation
}
}
xhr.send();
return {redirectUrl : "data:text/plain;charset=utf-8,Citation%20Created"}
}
},
{urls : ["*://*/scholar.enw*"]},
["blocking"]
);
问题:
我必须重定向到数据url。我希望点击动作取消。
返回{cancel : true}
会导致用户被重定向到" this -page- been -blocked by-an-extension generic chrome页面"
关于如何解决这个问题,有什么想法吗?
跟踪链接的过程如下:
- 用户对链接 进行点击(或按键)操作
- 为该事件运行事件处理程序代码
- 单击成功,浏览器对该资源发起HTTP请求
-
onBeforeRequest
监听器运行 - 其他
webRequest
监听器运行等
-
您试图在步骤2中停止单击事件,但是您的webRequest
代码直到步骤3才运行。您的webRequest
代码正在运行的事实意味着某些链接激活事件(click
或keypress
)已经成功。
你需要在页面中注入一个内容脚本,将事件取消侦听器直接添加到你想要停止的链接中(例如,使用return false
或preventDefault
)。
相关文章:
- 拦截对构造函数的调用
- $.ajax().done()中的window.open和弹出窗口拦截器
- Angular JS中的通用Ajax错误处理-拦截器
- 谷歌文档如何拦截Ctrl-S/Command-S来保存文档而不是html页面
- 如何在chrome启动时激发chrome.webRequest.onBeforeRequest.addListener(
- 阻止chrome.webRequest.onBeforeSendHeaders侦听器中的异步操作
- 如何检测是否有人使用谷歌分析拦截程序
- 如果需要登录,Angularjs$http拦截器会暂停异步请求
- 广告拦截处于活动状态,然后不要打开超链接到新标签
- 通过 Internet Explorer 扩展拦截 HTTP 请求
- 如何在重定向 URL 的标头中拦截和获取位置
- AngularJS:自定义 404 拦截器句柄 - 带有 URL 的响应
- 通过javascript拦截文档中的每一次点击
- Chrome 插件的 webRequest.onCompleted 不会触发源自 Flash 的请求
- SEO机器人是否总是遵循A标签的href属性中的URL,即使点击/点击被Javascript拦截
- 如何在 Javascript 函数中拦截 Web 服务器响应
- 拦截动态添加的表单提交
- 如何拦截ajax调用以返回mock数据
- 使用Java脚本跟踪网页中是否有Ajax请求,或者通过Selenium Web驱动程序拦截XMLHttpRequest
- 谷歌chrome扩展webrequest拦截