Я получаю следующую ошибку при попытке использовать мою всплывающую страницу для расширения хрома в качестве канала для связи между фоновой страницей и страницей, отображаемой в iframe во всплывающем окне.Мне нужно было изолированное окружение для запуска Vue.js, но мне нужно было иметь возможность получать данные из chrome.storage
и работать с другими такими объектами, чтобы я получал пакеты данных и отправлял команды на фоновую страницу при необходимости.
Uncaught SecurityError: Нарушение доступа к песочнице: заблокирован фрейм в «chrome-extension: // kncjlbkddbibekfmmljfpibdgjfdegeb» от доступа к фрейму в «chrome-extension: // kncjlbkddbibekfmmljfpibdgjfdegeb».Кадр, запрашивающий доступ, помещен в «песочницу» и не имеет флага «allow-same-origin».
Это код всплывающей страницы канала:
//please look at it as if block comments aren't commented out
//this is needed due to SO not having chrome.* available.
//although line comments are real comments.
let displayFrame = document.getElementById('displayFrame');
let displayPort = displayFrame.contentWindow;
/*
let backgroundPort = chrome.extension.connect({
name : "Extension Connection"
});
*/
// Forwarding from background to index.
/*
backgroundPort.onMessage.addListener((msg) => {
displayPort.postMessage(msg, "*");
});
*/
// Forwarding from index to background.
window.addEventListener("message", function(msg) {
/*
backgroundPort.postMessage({
data : msg.data
});
*/
});
<!doctype html>
<html lang='en'>
<head>
<meta charset='UTF-8' />
<script src="../scripts/popup.js" defer>
</script>
<style>
* {
box-sizing: border-box;
opacity: 1.0;
margin: 0px;
padding: 0px;
resize: none;
}
</style>
</head>
<body style="width : 300px; height: 500px;">
<iframe id="displayFrame" sandbox="allow-same-origin allow-scripts" src="./index.html" style="width: 300px; height: 500px" frameborder="0"> </iframe>
</body>
</html>
Содержимое background.js
и index.html/js
, на мой взгляд, не важно, они оба правильно передают сообщения соответствующим сторонам приведенного выше кода.и я подтвердил, что это сообщение, передаваемое в консоли, работает.Проблема возникает, когда в index.js
вносятся какие-либо изменения в переменную Vue.js.Я пытался из фактического объекта Vue (vm
в документах) и изнутри (присоединение слушателя сообщения к окну на смонтированном хуке).Я полагаю, что проблема связана с упакованными установщиками для каждой переменной, которая позволяет Vue отслеживать изменения состояния, и мне было любопытно, знает ли кто-нибудь, как избавиться от ошибки.
У меня нет проблем с расширениемв общем и целом;передача сообщений и даже вызовы установок / функций Vue работают отлично.Просто каждый раз, когда я открываю всплывающую страницу, эта ошибка появляется в консоли фоновых страниц.Это то, о чем мне следует беспокоиться, и можно ли это исправить?