Как я могу создать функцию в другом кадре? - PullRequest
0 голосов
/ 01 октября 2011

У меня есть сгенерированный набор кадров сторонних производителей (из справочной системы), и я могу добавить код в подкадр, содержащий мои страницы содержимого. Я не могу изменить содержимое другого набора фреймов, так как оно генерируется процессом сборки.

У меня может быть код js myhandler() на каждой моей странице содержимого HTML, которая загружается в подкадр. Это myhandler() вызывается, когда вызывается действие в верхнем фрейме.

Я хотел бы создать функцию в подкадре, но иметь ее в родительском (верхнем) фрейме, чтобы она создавалась только один раз, что означает, что я могу проверить, установлена ​​ли top.myhandler, и если да, то просто использовать ее повторно. .

Когда подкадр загружается с другим содержимым HTML, функция myhandler(), созданная на предыдущей странице содержимого, больше не доступна, когда родительское действие инициирует вызов к нему.

Возможно ли в javascript для кадра создать функцию в другом кадре? Или есть другое решение для этого?

1 Ответ

0 голосов
/ 05 октября 2011

Существует 1 условие для межкадрового JavaScript: все вовлеченные страницы (в разных кадрах) должны быть в одном домене .Если страницы находятся на разных доменах или поддоменах - кросс-фреймовый доступ к javascript будет ограничен в целях безопасности.

Предположим, у вас есть набор фреймов с 2 страницами: index.html и index2.html

Если эти страницы находятся в одном домене - они будут использовать одно и то же пространство имен javascript, т.е. все библиотеки javascriptссылка на index.html будет доступна из index2.html и наоборот.

Если страницы расположены в разных поддоменах одного и того же домена - можно перейти на несколько уровней вверх.Например:

frame1 contains:    http://myrepo.site.com/index.html
frame2 contains:    http://another.site.com/index2.html

вы можете установить для обоих (в JavaScript): document.domain = "site.com" После этого - код javascript на обеих страницах начнет показывать друг друга, так же как эти страницы находятся в одном домене.

...