Расширения Firefox не выполняют пост-запрос, но работают с обычным тегом скрипта - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь сделать почтовый запрос от моего расширения Firefox. Проблема, с которой я сталкиваюсь, заключается в том, что браузер даже не пытается отправить запрос на публикацию при загрузке скрипта для моего расширения.

Чтобы убедиться, что проблема не в самом коде, я создал файл index.html с тегом script и вставил туда свой код, и он работает.

Мой файл сценария расширения (не работает)

console.log('loaded script')
this.addEventListener('keypress', (e) => {
    if (e.key === 'a') {
        const url = 'my-server-endpoint'
        var selectedText = window.getSelection().toString()
        var xhttp = new XMLHttpRequest()
        xhttp.open('POST', url, true)
        xhttp.setRequestHeader('Content-Type', 'text/plain')
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                console.log(JSON.parse(xhttp.response).url)
            }
        }
        xhttp.send(selectedText)
    }
})

Мой файл index.html (работает)

<html>
    <head>
        <meta charset="utf-8">
    </head>
    Some sample text
    <script>
    this.addEventListener('keypress', (e) => {
        if (e.key === 'a') {
            const url = 'my-server-endpoint'
            var selectedText = window.getSelection().toString()
            var xhttp = new XMLHttpRequest()
            xhttp.open('POST', url, true)
            xhttp.setRequestHeader('Content-Type', 'text/plain')
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    console.log(JSON.parse(xhttp.response).url)
                }
            }
            xhttp.send(selectedText)
        }
    })
    </script>
</html>

Я ожидаю, что javascript, загружаемый из расширений, должен вести себя так же, как тег script. Я застрял, и вся помощь приветствуется.

1 Ответ

0 голосов
/ 01 июля 2019

Я решил эту проблему, обновив мои права доступа в моем файле manifest.json.

Вот что я добавил "permissions": ["*://*/*"]. Теперь оно соответствует выражению в поле совпадений свойства content_scripts.

Большое спасибо @Titus за подсказку о файле manifest.json!

...