Как получить доступ к другой вкладке в Chrome в JavaScript?

1

В основном, когда я запускаю этот скрипт в консоли Chrome, я хочу получить текущий url, открыть новую вкладку и установить ее как значение текстового поля.

javascript:(function(){
    var url=location.href;
    var newtab=window.open('http://www.theyoump3.com/');
    newtab.document.getElementsByName('url')[0].value=url;
})();

Когда я запускаю команду, я получаю исключение в консоли:

Uncaught DOMException: заблокирован кадр с источником " https://www.youtube.com " от доступа к кадру скрещивания.

Его понимали, проблема CORS. Есть ли обходной путь? Передача параметра url не поддерживается этим сайтом.

Такая же проблема возникает при попытке этого через iframe

var f=document.createElement('iframe');
f.src='https://www.youtube.com/watch?v=4J2zo7ArHnw';
f.style="position:absolute;width:400px;height:400px;z-index:99999;border:2px solid black";
document.body.appendChild(f);

конечно, он будет работать, тогда src указывает на то же происхождение

  • 0
    Проблема является междоменной, как объясняется stackoverflow.com/a/23927967/2894798 , она предотвращает запрос от одного домена к другому.
  • 0
    Да, это CORS, мне было интересно, есть ли обходной путь?
Показать ещё 2 комментария
Теги:
google-chrome

2 ответа

1

Если ваша отправная точка не совпадает с тем, как http://www.theyoump3.com/, вы не сможете этого сделать, потому что код JavaScript, который вы запускаете в консоли, запускается в контексте и происхождении страницы консоль прилагается.

Если вы делаете это со страницы на этом происхождении, вам просто нужно дождаться события load:

javascript:(function(){
    var url=location.href;
    var newtab=window.open('http://www.theyoump3.com/');
    newtab.addEventListener("load", function() {
        newtab.document.getElementsByName('url')[0].value=url;
    });
})();

Но опять же: Только если вы начинаете это происхождение, и я предполагаю, что вы этого не сделали.

  • 0
    Да, это CORS, мне было интересно, есть ли обходной путь?
  • 0
    @monstro: Нет. Но, возможно, два букмарклета: один для захвата URL в буфер обмена и открытия новой вкладки, другой для запуска на новой вкладке, чтобы заполнить ввод из буфера обмена.
-2

Использовать Window.postMessage

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

Я уверен, что это будет полезно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню