首页 > 解决方案 > Chrome扩展Javascript:如何在另一个javascript执行后获取window.location并获取href链接而不重定向

问题描述

我有一个支持 chrome 扩展作为自定义网站的解决方法,以从中获取信息。我正在尝试确定表中每一行的重定向链接,因为它对反应表没有正常的 href。

在此处输入图像描述

查看代码,我确定一旦单击屏幕上的屏幕 x/y 位置以执行操作,页面就会被重定向。然后,这会通过网站上的固有脚本来获取基于该位置的 ID/Link 以提供链接。

在下一节之后,剩下的部分是缩小的 React。

export function _onClick(_ref) { //_ref = MouseEvent {isTrusted: true, screenX: 1230, screenY: 458, clientX: 201, clientY: 332, …}

  var target = _ref.target; //target = td.col-xs-2 {__reactInternalInstance$db9spb3eyf: At, __reactEventHandlers$db9spb3eyf: {…}, colSpan: 1, rowSpan: 1, headers: "", …}


  store.activate([].concat(_toConsumableArray(store.getInstances())).reduce(domHelpers.findContainerNodes(target), []).sort(domHelpers.sortByDOMPosition).map(function (item) { //target = td.col-xs-2 {__reactInternalInstance$db9spb3eyf: At, __reactEventHandlers$db9spb3eyf: {…}, colSpan: 1, rowSpan: 1, headers: "", …}

    return item.instance;
  }));
}

话虽如此, chrome 扩展的目的之一是获取它在页面上重定向到的所有链接(表的每一行都被重定向,而不在表中显示 href 链接)。由于它没有附加到按钮的简单 href 链接,因此我很难确定如何获取链接而不重定向到页面本身。

我尝试过这样的事情,但它没有获得我需要的信息而没有重定向。

window.onclick = function(e) { 
            console.log(e);
        };

window.onclick 重定向事件 srcElement 显示它正在重定向的 baseURI

任何帮助将非常感激。谢谢你


添加了一些新内容以尝试帮助获取 webRequest,但在 manifest.js 中似乎不起作用。

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"permissions": [
    "webRequest",
    "*://*.example.com/",
    "webRequestBlocking"
],

标签: javascriptgoogle-chrome-extension

解决方案


这可能是您正在寻找的。如果这是在您的后台脚本中,则任何重定向某处的尝试都将被停止,并且该 url 将被记录到控制台。您将需要webRequestandwebRequestBlocking权限,以及所谓host permissions的权限(基本上只是在权限部分放置一个 url 模式)。你可以在这里阅读。

let nowhere = "https://www.google.com/gen_204"

chrome.webRequest.onBeforeRequest.addListener(e => {
    if (e.url != nowhere) {
        console.log(e.url);
        return {redirectUrl: nowhere}
    };
}, {urls: ArrayOfUrls}, ['blocking']);

推荐阅读