Как заставить HTMLElement.click () работать в расширениях Chrome - PullRequest
0 голосов
/ 14 мая 2019

Я бы хотел использовать html.element.click () в своем расширении, чтобы нажимать на вкладки и получать значения элементов DOM с этой веб-страницы: https://realtime.demo.sonicwall.com/main.html. Я пробовал много разных сценариев, включая отправку сообщения, иэто последняя версия, которую я нашел в Интернете, но все они приводят к следующей ошибке.Я получаю сообщение об ошибке: «VM2551: 5 Uncaught TypeError: Невозможно прочитать свойство« click »из null».

manifest.json

{
"manifest_version": 2,
"name": "SonicWall Audit",
"version": "1.0",
  "icons": {
  "128": "icon.png"
    },
"background": {
"persistent": false,
"scripts": ["background.js"]
    },
"content_scripts": [{
"matches": ["*://*.realtime.demo.sonicwall.com/*"],
"js": ["content.js"]
    }],
"browser_action": {
    "default_title": "Run Gen6 Audit",
     "default_popup": "index.html"
},
"permissions": [
    "activeTab",
    "<all_urls>"
],

"permissions": ["activeTab"]
}

test.js

document.getElementById("test").addEventListener('click', () => {
    console.log("Popup DOM fully loaded and parsed");

    function modifyDOM() {      
        //You can play with your DOM here or check URL against your regex
        console.log('Tab script:');
    document.getElementById('j1_64_anchor').click();
        console.log(document.body);
        return document.body.innerHTML;
    }

    //We have permission to access the activeTab, so we can call chrome.tabs.executeScript:
    chrome.tabs.executeScript({
        code: '(' + modifyDOM + ')();' //argument here is a string but function.toString() returns function's code
    }, (results) => {
        //Here we have just the innerHTML and not DOM structure
        console.log('Popup script:')
        console.log(results[0]);
    });
});

index.html

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <button id="test">TEST!</button>
    <script src="test.js"></script>
  </body>
</html>

1 Ответ

0 голосов
/ 14 мая 2019

Я только что получил его на работу!Спасибо вам всем!К счастью, все фреймы находятся в одном домене!

    function modifyDOM() {      
            //You can play with your DOM here or check URL against your regex
            console.log('Tab script:');
            console.log(document.body);
            var iframe = document.getElementById('outlookFrame');
            var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
            innerDoc.getElementById('j1_64_anchor').click();
            return document.body.innerHTML;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...