После еще нескольких копаний я обнаружил, что мне нужно использовать фоновую страницу. Видимо, это единственное, что вы можете вызвать document.execCommand. Итак, исправление состоит в том, чтобы создать background.html с функцией копирования и входными данными, добавив прослушиватель следующим образом:
chrome.extension.onRequest.addListener(function(obj) {
copyLinkToClipboard( obj.link );
});
, а затем с помощью sendRequest передайте текст, который вы хотите скопировать, на фоновую страницу:
chrome.extension.sendRequest({link: linkText});
и не забудьте добавить фоновую страницу в манифест
"background_page": "background.html",
вуаля. текст скопирован в буфер обмена. Я ЛЮБЛЮ более простой способ сделать это (если проблема заключается в безопасности, то почему бы не создать API для расширений? Или, скорее, отказаться от экспериментального API только для того, чтобы заставить нас сделать этот глупый обходной путь?), ну да ладно, этого будет достаточно для время