Сценарий содержимого расширения Chrome останавливает выполнение при первом вызове функции и не выдает ошибокCSS

Разбираемся в CSS
Ответить Пред. темаСлед. тема
Anonymous
 Сценарий содержимого расширения Chrome останавливает выполнение при первом вызове функции и не выдает ошибок

Сообщение Anonymous »

Я сделал первую строку моего сценария содержимого console.log(); заявление, потому что оно, похоже, не загружалось. Сценарий содержимого запускает первую строку, а затем больше ничего не делает. Никаких ошибок не возникает, ни одна другая консоль.log(); операторы обрабатываются, установка операторов наблюдения на вкладке Chrome DevTools Sources для переменных в первой функции никогда не присваивает никаких значений; Я в недоумении от того, что происходит. Я написал расширение в vscode, чтобы оно сообщало мне, допустил ли я какие-либо синтаксические ошибки или что-то, что я пытался сделать, не работало, например, сообщение, передаваемое в/из моего фона.service_worker. Я не пытаюсь ничего импортировать в сценарий контента. Я очень надеюсь, что проблема покажется кому-то, кто читает мой код, бросающейся в глаза, и я смогу получить помощь. Я трачу слишком много времени на вращение колес и не добиваюсь никакого прогресса.
Расширение должно делать две вещи.
Первая: поиск по тексту. document.body DOM для совпадений набора регулярных выражений и замените все найденные совпадения гиперссылкой. Фрагмент HTML-кода — это тестовый файл, в котором большая часть текста должна содержать гиперссылки после пунктов списка.
Второе: добавьте пункт контекстного меню, который отображается при щелчке правой кнопкой мыши по выделенному тексту. позволяет пользователю перейти к форме ServiceNow или запустить поиск ServiceNow.
Функциональность контекстного меню работает без каких-либо проблем, и, как я уже сказал, не возникало никаких ошибок, которые я обнаружил во время мое тестирование на данный момент, поэтому фон.service_worker код надежный, и все импорты также должны быть правильными и работать правильно. Проблема, должно быть, связана со сценарием содержимого.
manifest.json

Код: Выделить всё

{
"name": "SearchNow",
"description": "Search ServiceNow",
"manifest_version": 3,
"version": "0.9",
"background": {
"service_worker": "background-simplified.js",
"type": "module"
},
"icons": {
"16": "icons/SNow16.png",
"24": "icons/SNow24.png",
"32": "icons/SNow32.png",
"48": "icons/SNow48.png",
"128": "icons/SNow128.png"
},
"action": {
"default_icon": {
"16": "icons/SNow16.png",
"24": "icons/SNow24.png",
"32": "icons/SNow32.png"
},
"default_title": "Click for advanced search options",
"default_popup": "popup.html"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*", "file:///*/*"],
"css": ["styles.css"],
"js": ["content-script-hyperlinker.js"],
"run_at": "document_end"
}
],
"options_ui": {
"page": "options.html",
"open_in_tab": true
},
"permissions": [
"activeTab",
"alarms",
"tabs",
"scripting",
"storage",
"contextMenus"
],
"host_permissions": [
"[url=${url}]${match}[/url]`;
}
);
});
}

if (replacedText !== text) {
console.log('Replaced text:', replacedText);
const span = document.createElement('span');
span.innerHTML = replacedText;
node.parentNode.replaceChild(span, node);
}
} else if (node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE') {
for (let child = node.firstChild; child; child = child.nextSibling) {
hyperlinkMatches(child, regexPatterns);
}
}
}

function runner () {
console.log('Document loaded, starting hyperlinking process.');
chrome.runtime.sendMessage({ action: 'getRegexPatterns' }, (response) =>  {
const regexPatterns = response.regexPatterns;
hyperlinkMatches(document.body, regexPatterns);
});
}

// document.addEventListener('DOMContentLoaded', runner);
background-simplified.js

Код: Выделить всё

import { autoNav } from './handlers/autoNav.js';
import { autoSearch } from './handlers/autoSearch.js';
import { constructUrl } from './utils/urlConstructor.js';
import * as eventListeners from './eventListeners.js';
import * as regexPatterns from './utils/regexPatterns.js';

/* jshint esversion: 6*/

// Initialize event listeners
eventListeners.setupEventListeners();

// Create context menu entries
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: 'autoNav',
title: 'Open "%s"',
contexts: ['selection']
});

chrome.contextMenus.create({
id: 'autoSearch',
title: 'Search ServiceNow for "%s"',
contexts: ['selection']
});
});

// Handle message passing with content script
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.action === 'getRegexPatterns') {
sendResponse({ regexPatterns });
} else if (request.action === 'constructUrl') {
const url = constructUrl(request.base, request.path, request.query);
sendResponse({ url });
}
});

// Handle context menu item clicks
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === 'autoNav') {
autoNav(info, tab);
} else if (info.menuItemId === 'autoSearch') {
autoSearch(info, tab);
}
});

Код: Выделить всё





Test Page for Content Script


Test Page for Content Script
Here are some test cases for the regex patterns:
[list]
[*]KB1234567
[*]INC1234567
[*]RITM1234567
[*]STASK1234567
[*]REQ1234567
[*]CALL1234567
[*]PRB1234567
[*]CHG1234567
[*]SEC1234567
[*]CHAT1234567
[*]192.168.1.1
[*]example@example.com
[*]CO0102A-12345678
[*](123) 456-7890
[*]AB123456789
[/list]




Подробнее здесь: https://stackoverflow.com/questions/792 ... l-and-does
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «CSS»