Chrome扩展Javascript:如何在另一个Javascript执行并获取href链接而不重定向后获取window.location

Chrome扩展Javascript:如何在另一个Javascript执行并获取href链接而不重定向后获取window.location,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我有一个支持chrome的扩展,作为一个自定义网站的变通方法,从中获取信息。我试图确定表中每一行的重定向链接,因为它没有到react表的普通href 查看代码,我确定一旦单击屏幕上的屏幕x/y位置以执行操作,页面就会重定向。然后,通过网站上的固有脚本获取基于该位置的ID/链接以提供链接 在下一节之后,它的其余部分将缩小 export function _onClick(_ref) { //_ref = MouseEvent {isTrusted: true, screenX: 1230, sc

我有一个支持chrome的扩展,作为一个自定义网站的变通方法,从中获取信息。我试图确定表中每一行的重定向链接,因为它没有到react表的普通href

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

在下一节之后,它的其余部分将缩小

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);
        };

任何帮助都将不胜感激。多谢各位


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

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

您可以尝试解除单击事件的绑定。由于无法从内容脚本端执行此操作,因此需要将代码注入页面

manifest.json:

{
    "name": "Run code on twitter mobile",
    "version": "1.0",
    "manifest_version": 2,
    "content_scripts": [{
        "js": ["contentscript.js"],
        "matches": ["http://mobile.twitter.com/*"]
    }],
    "web_accessible_resources": ["script.js"]
}
contentscript.js:

var s = document.createElement('script');
s.src = chrome.extension.getURL('script.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
    s.parentNode.removeChild(s);
};
然后,我将尝试使用removeEventListened解除元素绑定:

document.getElementById("myDIV").removeEventListener("click", myFunction);
或者只是简单地克隆元素

请检查这些答案以了解更多详细信息:


    • 这可能就是您要找的。如果这是在您的后台脚本中,任何重定向到某处的尝试都将停止,url将记录到控制台。您需要
      webRequest
      webRequestBlocking
      权限,以及所谓的
      主机权限
      (基本上只是在权限部分放置一个url模式)。你可以读到它


      发布的事件信息对于手头的任务似乎没有用处。尝试在后台脚本中侦听chrome.webNavigation.onBeforeNavigation以获取URL,并使用setTimeout(window.stop)阻止内容脚本的单击处理程序中的导航
      MouseEvent
      代码和日志完全不提供任何相关信息。提供相关网站的代码,尝试了解他们是如何将单击事件绑定到重定向的。无法使用零信息。在单击事件上添加了其他信息。您好,请说明在另一个javascript执行并在不重定向的情况下获取href链接后,您的意思是什么?什么javascript?它在你的控制之下吗?什么链接?另外,我试图确定表中每一行的重定向链接意味着什么?为什么不看看正在发出的网络请求,然后用不同的X,Y值发出自己的AJAX请求,以迭代所有可能的URL?我设置了“权限”:[“webRequest”,“:/。example.com/,“webRequestBlocking”,“tabs”,“activeTab”],,和get Uncaught(in promise)TypeError:无法在测试下一页(content.js:59)读取未定义的属性“onBeforeRequest”@RobertLee它在您的后台脚本中吗?已尝试后台脚本错误是说您正在尝试从
      未定义的
      获取
      onBeforeRequest
      ,因此,无论您试图从何处调用,要么
      chrome.webRequest
      未定义,要么您输入了一个拼写错误。您的背景脚本名为
      content.js
      ?因为这就是错误的来源。是的,后台脚本名为content.jstryed,通过元素循环,并尝试了,但没有从单击事件中停止。我的理论是,正是因为使用了鼠标位置的坐标,所以我无法基于页面上的DOM元素进行操作。
      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']);