Расширение Chrome Javascript: как получить window.location после выполнения другого JavaScript и получения ссылки href без перенаправления - PullRequest
5 голосов
/ 10 июня 2019

У меня есть расширение поддержки Chrome в качестве обходного пути к пользовательскому веб-сайту для получения информации от него.Я пытаюсь определить ссылку для перенаправления каждой строки в таблице, поскольку она не имеет нормального href к таблице реакции.

enter image description here

Просмотркод, я определил, что страница перенаправляется после нажатия x / y позиции экрана на экране, чтобы выполнить действие.Затем он проходит через встроенный сценарий на веб-сайте для получения идентификатора / ссылки на основе этой позиции для предоставления ссылки.

После следующего раздела остальная часть становится миниатюрной 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 redirect event srcElement shows baseURI where it is redirecting

Любая помощь будет высоко ценится.Спасибо


Добавлен новый контент, чтобы попытаться помочь с получением webRequest, но, похоже, он не работает в manifest.js.

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

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Это может быть то, что вы ищете. Если это в вашем фоновом скрипте, любая попытка перенаправить куда-либо будет остановлена, и URL будет зарегистрирован в консоли. Вам понадобятся разрешения webRequest и webRequestBlocking, а также так называемые 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']);
0 голосов
/ 17 июня 2019

Вы можете попытаться отменить привязку события клика.Поскольку это невозможно сделать со стороны сценария содержимого, вам необходимо внедрить код в страницу.

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

или просто клонировать элемент согласно этому ответу .

Пожалуйста, проверьте эти ответы для более подробной информации:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...