У меня есть простое расширение Chrome, которое вставляет iframe в активную страницу (нет важная часть)
Я хочу embed, игру, расположенную по адресу http://diep.io, но на этом сайте реализованы некоторые методы frame-busting. Я все еще хочу иметь возможность загрузить это в iframe, чтобы сделать это мини-окно похожим на вещь, используя Iframe(открыт для других тегов, таких как embed или webview (однако вы можете заставить его работать)).
Итак, как я могу получить здесь вещь типа anti-frame busting?
Очевидно, что это cross-origin, поэтому редактирование DOM внутри isнет действительно самый простой / должен быть возможнымнет. Я пробовал использовать атрибут sandbox, но это просто вызывает проблемы с предыдущей страницей внутри iframe (страница с центральным типом ссылок) и делает невозможным использование.
Итак, главный вопрос здесь - как сделать cross-originembedded pageanti frame bustingбез атрибутом sandbox?
Атрибут песочницы - это то, как вы изменяете политику перекрестного происхождения расширения, хром не позволит вам далеко продвинуться без него, если вы хотите внедрить контент на страницу, которую вы не создавали. Есть ли причина, по которой вы избегаете этого?
Я не утверждаю, что он называет это моим кодом, но я избегаю этого, потому что я всюду искал эту ошибку и пока не нашел исправления - The frame attempting navigation is sandboxed, and is therefore disallowed from navigating its ancestors. этот код ошибки появляется всякий раз, когда я нажимаю на ссылку внутри (ссылка javascript с использованием угловой). Есть ли способ обойти это и, возможно, добавить страницу в белый список? Это было бы даже лучшим решением, чем то, о котором я спрашивал выше.
Кроме того, команда интернет-магазина уже несколько раз одобряла мое расширение (обновления) вручную, так что они в порядке с тем, что я делаю. Не беспокойся об этом. Просто хочу улучшить качество моего расширения и предотвратить неудовлетворенность пользователей, возможно, когда они щелкнут ссылку diep.io и обнаружат, что любая отправляемая ими форма была полностью стерта из-за надоедливой чуши типа if (window.top == false) { window.parent.location.replace('blah') }.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я нашел решение. Мой iframe управляется кнопкой (с HTML-идентификатором deHBox) И мой iframe связан с переменной с меткой «Ifr».
document.getElementById("deHBox").addEventListener("click", function(){
sandbox(false);
Ifr.src = url;
Ifr.style.height = 'calc(100% - 23px)';
Ifr.style.width = '100%';
setTimeout(function() {sandbox(true)}, 500);
});
setTimeout(function() {sandbox(true)}, 500);
function sandbox(on) {
if (on == true) {
Ifr.sandbox = "allow-scripts allow-forms allow-pointer-lock allow-popups allow-same-origin";
} else {
Ifr.removeAttribute('sandbox');
}
}
Я только что добавил это в свой файл injected.js ...
Будет ли заставить iframe думать, что это верхняя страница? (Я знаю, что это обсуждалось) Если да, то как именно это сделать?