Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2023, 09:36
Аватар для CHIMERA
Новичок на форуме
Отправить личное сообщение для CHIMERA Посмотреть профиль Найти все сообщения от CHIMERA
 
Регистрация: 29.03.2023
Сообщений: 2

Доступ к frames внутри DIV
Здравствуйте. По ряду причин переписал js код с document.write на программное создание элементов (Нужно было, чтобы главный frameset и его содержимое заключались внутри общего DIV(для последующего создания элементов на оверлее)).

Раньше код прекрасно понимал конструкцию top.frames, но сейчас, т.к структура DOM изменилась top.frames возвращает undefined...

Вопрос, как получить доступ к frames???

например, вот это раньше работало:
if ( top.frames['chat']['chat2'] ) { top.frames['chat']['chat2'].start();  }


Сейчас структура такова:
<body id="claro" class="claro">
<div id="appLayout"></div>
</body>


frameset с остальными фреймами находится внутри div с id "appLayout":
jQuery.noConflict();
jQuery(document).ready(function( $ ) {
$('<frameset>', {
    border: 0,
    id: 'super',
    onload: '',
    cols: '65,*'
}).append(
    $('<frame>', {
        name: 'panel',
        noresize: 'noresize',
        scrolling: 'no',
        src: '/panel.php?0.13190476805903018'
    }),
    $('<frameset>', {
        border: 0,
        rows: '30,*,30'
    }).append(
        $('<frame>', {
            src: 'menu.php?' + rnd,
            name: 'player',
            scrolling: 'no',
            noresize: 'noresize'
        }),
        $('<frameset>', {
            border: 3,
            bordercolor: '#758999',
            frameborder: 1,
            framespacing: 3,
            id: 'main-set',
            rows: rows
        }).append(
            $('<frame>', {
                frameborder: 0,
                id: 'main',
                name: 'main',
                src: main_scr
            }),
            $('<frameset>', {
                cols: cols,
                id: 'chat-set'
            }).append(
                $('<frame>', {
                    name: 'chat',
                    scrolling: 'no',
                    src: '/ch/html/ch_frames.html?' + rnd
                }),
                (userTutorial ? '' : $('<frame>', {
                    name: 'online',
                    scrolling: 'no',
                    src: '/ch/html/online.php?' + rnd,
                    frameborder: ''
                }))
            )
        ),
        (userTutorial ? '' : $('<frame>', {
            id: 'bottomFrame',
            name: 'bottom',
            noresize: 'noresize',
            scrolling: 'no',
            src: '/buttons.php?' + rnd
        })),
        $('<frame>', {
            name: 'refreshed',
            target: '_top',
            frameborder: 0,
            border: 0,
            marginheight: 0,
            scrolling: 'no',
            noresize: 'noresize',
            src: 'refreshed.html'
        })
    )
).appendTo($('#appLayout'))
});


Старый код:
document.write(
    
        '<frameset border="0" onload="if ( top.frames[\'chat\'][\'chat2\'] ) { top.frames[\'chat\'][\'chat2\'].start();  }" cols="65,*">' +
          '<frame name="panel" noresize="noresize" scrolling="no" src="/panel.php?0.13190476805903018">' +
            '<frameset border="0" rows="30,*,30">' +
                '<frame src="menu.php?' + rnd + '" name="player" scrolling="no" noresize="noresize" />' +
                '<frameset border="3" bordercolor="#758999" frameborder="1" framespacing="3" id="main-set" rows="' + rows + '">' +
                    '<frame frameborder="0" id="main" name="main" src="'+main_scr+ '" />' +
                    '<frameset cols="' + cols + '" id="chat-set">' +
                        '<frame name="chat" scrolling="no" src="/ch/html/ch_frames.html?' + rnd + '" />' +
                        (userTutorial ? '' : '<frame' + (!Opera ? ' frameborder="0"' : '') + ' name="online" scrolling="no" src="/ch/html/online.php?' + rnd + '" />') +
                    '</frameset>' +
                '</frameset>' +
                (userTutorial ? '' : '<frame id="bottomFrame" name="bottom" noresize="noresize" scrolling="no" src="/buttons.php?' + rnd + '" />') +
                '<frame name="refreshed" target="_top" frameborder="0"  border="0" marginheight=0 scrolling="no" noresize src="refreshed.html">'+
            '</frameset>' +
        '</frameset>'
    );
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2023, 09:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от CHIMERA
frameset с остальными фреймами находится внутри div с id "appLayout"
...
Вопрос, как получить доступ к frames???
Как вариант...

const o = window.frames

https://learn.javascript.ru/iframes#...-window-frames

Последний раз редактировалось ksa, 29.03.2023 в 09:57.
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2023, 10:19
Аватар для CHIMERA
Новичок на форуме
Отправить личное сообщение для CHIMERA Посмотреть профиль Найти все сообщения от CHIMERA
 
Регистрация: 29.03.2023
Сообщений: 2

Сообщение от ksa Посмотреть сообщение
Как вариант...

const o = window.frames

https://learn.javascript.ru/iframes#...-window-frames
Работает! Благодарю! А ларчик-то просто открывался....
const topfFrames = window.frames;

Последний раз редактировалось CHIMERA, 29.03.2023 в 10:23.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Валидация input внутри div, а не внутри form Vaska Элементы интерфейса 5 15.10.2019 20:13
Как отправить div внутри form ruslite AJAX и COMET 38 05.03.2014 03:48
Div внутри div valyan (X)HTML/CSS 3 03.09.2013 22:43
Как сделать обход элементов внутри DIV reno4 jQuery 4 24.07.2013 13:30
fade маленького div внутри большого div kenwo0d jQuery 17 19.05.2012 16:27