Фактическая причина проблемы заключается в том, что extension.onMessage является устаревшим псевдонимом для runtime.onMessage, поэтому у вас есть два прослушивателя для одного и того же события, но только первый зарегистрированный прослушиватель sendResponse передается вызывающей стороне, и это {}
.
Тем не менее, весь рабочий процесс может быть чрезвычайно упрощен: нет необходимости в фоновом скрипте или скрипте контента, поэтому вы можете удалить "background" и "content_scripts" из манифеста. json. Нет необходимости в обмене сообщениями.
Вам нужно всплывающее окно browser_action и просто прочитайте буфер обмена во всплывающем скрипте.
manifest. json:
{
"manifest_version": 2,
"name": "test",
"version": "1.0",
"browser_action": {
"default_popup": "popup.html"
},
"permissions": [
"clipboardRead"
]
}
popup. html:
<!DOCTYPE html>
<body>
<p id=text contenteditable=true></p>
<script src=popup.js></script>
</body>
всплывающее окно. js:
document.getElementById('text').focus();
document.execCommand('paste');
Это все содержимое расширения.