我正在尝试创建一个Chrome扩展程序,将google scholar endnote文件转换为引文格式。
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"]
);
问题:
我必须重定向到数据网址。我希望点击操作取消。
返回{cancel : true}
会导致用户被重定向到“此页面被加密的通用Chrome页面阻止”
关于如何解决这个问题的任何想法?
答案 0 :(得分:0)
关注链接的过程如下:
onBeforeRequest
侦听器运行webRequest
听众运行等您尝试在步骤2中停止点击事件,但是您的webRequest
代码直到第3步才会运行。您的webRequest
代码正在运行的事实意味着某些代码链接激活事件(click
或keypress
)已经成功。
您需要在页面中插入内容脚本,以便将取消事件的侦听器直接添加到您要停止的链接中(例如,使用return false
或preventDefault
)。