首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Chrome Extension Javascript:如何在另一个javascript执行后获取window.location,并在不重定向的情况下获取href链接

Chrome Extension Javascript:如何在另一个javascript执行后获取window.location,并在不重定向的情况下获取href链接
EN

Stack Overflow用户
提问于 2019-06-11 02:43:25
回答 2查看 845关注 0票数 5

我有一个支持chrome扩展,作为一个自定义网站的变通办法,从它获得信息。我正在尝试确定表中每一行的重定向链接,因为它没有正常的react表的href。

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

在接下来的小节之后,剩下的就是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);
        };

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

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

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

回答 2

Stack Overflow用户

发布于 2019-06-17 23:52:21

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

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

或者只是简单地克隆元素according to this answer

有关更多详细信息,请查看以下答案:

票数 0
EN

Stack Overflow用户

发布于 2019-06-18 18:01:05

这可能就是你要找的。如果这是在你的后台脚本中,任何重定向到某个地方的尝试都将被停止,并且url将被记录到控制台。您将需要webRequestwebRequestBlocking权限,以及所谓的host permissions (基本上只是将url模式放在权限部分)。你可以在here上读到它。

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']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56531888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档