Не удается добавить прослушиватель событий - PullRequest
0 голосов
/ 18 марта 2020

я могу добавить прослушиватель событий для кликов к blank, но не к twitter в приведенном ниже коде.

const blank = window.open();
const twitter = window.open("https://twitter.com");

const PrintClick = function (name) {
    return function (...args) {
        console.log(name, ...args);
    };
};

blank.addEventListener("click", PrintClick("blank"));
twitter.addEventListener("click", PrintClick("twitter"));

это потому, что твиттер сделал что-то, чтобы не позволить мне сделать это? будет ли способ обойти это?

Ответы [ 3 ]

0 голосов
/ 18 марта 2020

Причина, по которой вы не получили никаких исключений:

Большинство браузеров не поддерживают несколько всплывающих окон, поэтому для выполнения sh вам необходимо попробовать:

window.open(yoururl,"_blank",'PopUp',randomnumber,'scrollbars=1,menubar=0,resizable=1,width=850,height=500');

Или дайте каждому окну имя нового окна .

window.open(url, WindowName)

Риск безопасности

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

Источник считается другим, если не поддерживается хотя бы одна из следующих частей адреса:

<protocol>://<hostname>:<port>/...

Протокол , имя хоста и порт должен совпадать с вашим доменом, если вы хотите получить доступ к фрейму.

Примеры

Вот что произойдет при попытке доступа к следующим URL-адресам с http://www.example.com/home/index.html

URL                                             RESULT 
http://www.example.com/home/other.html       -> Success 
http://www.example.com/dir/inner/another.php -> Success 
http://www.example.com:80                    -> Success (default port for HTTP) 
http://www.example.com:2251                  -> Failure: different port 
http://data.example.com/dir/other.html       -> Failure: different hostname 
https://www.example.com/home/index.html:80   -> Failure: different protocol
ftp://www.example.com:21                     -> Failure: different protocol & port 
https://google.com/search?q=james+bond       -> Failure: different protocol, port & hostname 

Не рекомендуется

Отключение политики того же происхождения в вашем браузере

Я свяжу соответствующий ответ. Однако помните, что отключение политики того же источника повлияет только на ваш браузер . Кроме того, запуск браузера с отключенными настройками безопасности одного и того же источника предоставляет любому доступу веб-сайта к ресурсам разных источников, поэтому это очень небезопасно и НИКОГДА не делать, если вы точно не знаете, что делаете (например, в целях разработки) .

0 голосов
/ 18 марта 2020

В целях безопасности браузеры отключают любое взаимодействие между доменами, которые вам не принадлежат. Вообразите все, что можно сделать с этим.

0 голосов
/ 18 марта 2020

addEventListener может только слушать объект dom текущей страницы, вы можете рассмотреть операции инфраструктуры автоматизации селена

...