Существует расширение для Chrome, которое называется Requestly, и оно позволяет вам перенаправить адрес на один из ваших вариантов. Я протестировал правила 'Redirect Request', и он взял URL-адрес javascript и перенаправил его на один из моих общедоступных серверов. Как я могу имитировать (или воссоздать), как «Requestly» делает это с JavaScript?
Я пытался перенаправить, используя window.location.replace
и window.location.href
, но это просто перенаправляет всю мою страницу в исходный код javascript.
2 ответа
Краткий ответ: ВЫ НЕ МОЖЕТЕ ПРЕКРАТИТЬ запросы JS / CSS от JS CODE и выполнять перенаправление .
Я думаю, что вы хотите добиться возможности перенаправления в вашем коде JS. В Requestly мы делаем несколько вещей, чтобы обеспечить функциональность перенаправления.
Короче говоря, если вам нужна возможность перенаправления, вам нужно больше возможностей, чем просто JS API, вам нужны Chrome Extension API
Вы можете легко найти простой пример настройки Redirect в документации по Chrome WebRequest API.
Отказ от ответственности : Сачин, основатель @ Requestly
Вот супер базовый пример того, как вы могли бы сделать это. По сути, разрешите некоторый настраиваемый список перенаправлений, а затем, как только страница загрузится, вы можете узнать, каково текущее местоположение window.location.href
(в данном случае iframe.src
) и если этот URL-адрес находится в вашем перенаправить список, перенаправить страницу.
Мне пришлось использовать iFrame, чтобы продемонстрировать это, так что, очевидно, есть слой перевода в то, что вы используете / делаете здесь.
Введите адрес https://youtube.com/
в адресную строку (текстовое поле), и вы увидите, как может работать базовый подход.
const redirectMaps = [
{
from: 'https://youtube.com/',
to: 'https://youtube.com/embed/dQw4w9WgXcQ'
}
];
const address = document.getElementById('address');
const iframe = document.getElementById('myFrame');
address.addEventListener('change', () => {
const url = address.value;
iframe.setAttribute('src', url);
});
iframe.onload = (e) => {
console.log('src', iframe.src);
if (iframe.src) {
const match = redirectMaps.find( src => src.from === iframe.src);
if (match) {
window.location.href = match.to;
}
}
}
#container {
display: grid;
grid-template-rows: auto 1fr;
}
iframe {
height: 500px;
width: 100%;
}
<div id="container">
<input id="address" />
<iframe id="myFrame"></iframe>
</div>
Лучше работает в JSFiddle.
JSFiddle: https://jsfiddle.net/
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.