Я создаю веб-расширение, которое запускается на каждой странице, но работает только в определенных контекстах. Вот метод isSupported ():
// return a boolean value that is true if the domain/page is supported, element name matches
// supported types, and content is marked as spell checkable
function isSupported (node, hostname) {
const supportedNodeNames = ['TEXTAREA', 'DIV']
const supportedDomains = ['mail.google.com', 'github.com']
if (node.spellcheck && node.isContentEditable) {
if (node.nodeName === 'TEXTAREA') {
return true
}
if (supportedNodeNames.contains(node.nodeName) && supportedDomains.contains(hostname)) {
return true
}
}
return false
}
Этот код, к сожалению, мешает запуску расширения на моей локальной тестовой странице, т. Е. Когда URI равен file:///home/username/github/multi-dict/test_page/test-page.html
Можно ли безопасно положиться наwindow.location.hostname
будучи неопределенным * и позволить расширению работать, когда оно есть? Я проверил документы в MDN и спецификации , но мне было не совсем понятно, в каких именно контекстах имя хоста будет неопределенным.
Заранее спасибо!
* На самом деле это пустая строка, оставленная в исходном описании для контекста чтения / ответа. Итак, вопрос в том, могу ли я смело полагаться на то, что window.location.hostname
будет пустым только для локального файла, открытого браузером, - локальный веб-сервер не работает.