Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Взаимодействие между "чужими" скриптами (https://javascript.ru/forum/events/86041-vzaimodejjstvie-mezhdu-chuzhimi-skriptami.html)

alxdef 09.08.2024 15:31

Взаимодействие между "чужими" скриптами
 
Здравствуйте!
Есть такая ситуация. Страница HTML (основной код на PHP, содержит JS и HTML), загружает посредством вставки <object> через innerHTML другую полноценную страницу HTML, содержащую также и JS. "Чужая" страница успешно стартует, запускает весь необходимый код и находится полностью в рабочем состоянии. Внутри скрипта чужой страницы есть такая часть кода:
window.fun1 = () => {
};

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

voraa 09.08.2024 16:01

Цитата:

Сообщение от alxdef
Насколько я понимаю, это обработчик события.

Почему событие? Какое? Обычно свойства, содержащие обработчики событий начинаются с on: onclick, onchange...

Обратиться к элементам и window страницы содержащейся в <object> или <iframe> можно с помощью свойств contentWindow и contentDocument этого элемента.

Типа
<object id="obj">....</object>


const obj = document.getElementById('obj');
obj.contentWindow.fun1();


Основная страница и встроенная страница должны загружаться с одного домена. Иначе будут CORS ошибки.

alxdef 09.08.2024 16:06

Цитата:

Сообщение от voraa (Сообщение 555948)
Почему событие? Какое? Обычно свойства, содержащие обработчики событий начинаются с on: onclick, onchange...

Обратиться к элементам и window страницы содержащейся в <object> или <iframe> можно с помощью свойств contentWindow и contentDocument этого элемента.

Типа
<object id="obj">....</object>


const obj = document.getElementById('obj');
obj.contentWindow.fun1();

Я не силен в JS, но, может, подскажете, что это за конструкция? Эта часть кода находится вне какой-либо функции.

alxdef 09.08.2024 16:12

Спасибо!
Заработало.


Часовой пояс GMT +3, время: 14:40.