Javascript 谷歌浏览器扩展webrequest截获

Javascript 谷歌浏览器扩展webrequest截获,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在尝试创建一个chrome扩展,将google scholar尾注文件转换为引文格式 chrome.webRequest.onBeforeRequest.addListener(function(reqObj){ if (reqObj.tabId != -1){ var xhr = new XMLHttpRequest(); xhr.open("GET", reqObj.url, true); xhr.onreadystatechang

我正在尝试创建一个chrome扩展,将google scholar尾注文件转换为引文格式

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}
将导致用户重定向到“此页面被扩展通用chrome页面阻止”


关于如何解决这个问题,有什么想法吗?

遵循链接的过程如下所示:

  • 用户对链接执行单击(或按键)操作
  • 为该事件运行事件处理程序代码
  • 单击成功,浏览器对资源进行HTTP请求
    • onBeforeRequest
      侦听器运行
    • 其他
      webRequest
      侦听器运行等
  • 您正试图在步骤2中停止单击事件,但您的
    webRequest
    代码直到步骤3才运行。您的
    webRequest
    代码正在运行这一事实本身就意味着某些链接激活事件(
    单击
    按键
    )已经成功


    您需要在页面中插入内容脚本,以便将事件取消侦听器直接添加到要停止的链接中(例如,使用
    返回false
    预防默认值
    )。

    任何原因都不能插入内容脚本和
    返回false
    (或
    e.预防默认值()
    )在事件侦听器绑定到要停止的相关链接时?@apsillers可能就是这样。我只是希望一些没有消息传递的简单全局代码就足够了。不过我愿意接受进一步的建议。。。谢谢,这是我的第一个chrome扩展(一个爱好项目)。我现在已经注入了一个内容脚本