Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создать блок div из Iframe в основную страницу (https://javascript.ru/forum/misc/35965-sozdat-blok-div-iz-iframe-v-osnovnuyu-stranicu.html)

фонарик 27.02.2013 22:48

Цитата:

Сообщение от рони (Сообщение 237767)
неустанавливайте свойство скриптом если хотите приоритета класса

Очень старался понять эту глубокую для меня фразу. Понял, что вы говорите, что чтобы из таблицы стиля создаваемый блок считал все свойства как приоритетные, то после создания див блока скриптом не создавать ему никакие дополнительные свойства. Если я вас понял правильно - так в скрипте никаких свойств больше не создается
<script>
function DopInfo(str){
var d=document.createElement('div');
d.className='dopInfoCSS'
document.getElementById('content').appendChild(d)
}
</script>
И из таблицы при этом класс не считывается, отчего так?

Дело такое, что если создавать на простом примере в простой странице - то класс считается. Но тут ситуация такая, что есть основная страница, есть в ней фрейм, который вызывает функцию из основной страницы на создание блока. Это отягощение явно как-то связано с тем, что такое присвоение класса не работает :( Притом при всем, такой класс есть в стиляк как самого фрейма, так и основной страницы.

Deff 27.02.2013 22:49

<style>
#Fonaric {
 background-color: #C1D3FB;
 top:100px;
 position:absolute;
}
.Fonaric {
 color:green;
 font-weight:700;
 height:100px;
}
</style>
<body>
<script>
function DopInfo(str){
var d=document.createElement('div');
d.id='Fonaric';
d.className='Fonaric';
d.style.left = "300px";
d.style.width = "200px";
d.style.border = "red solid 1px";
d.style.padding = "12px";
d.innerHTML = str;
document.body.appendChild(d);
}DopInfo('Привет');
</script>

фонарик 27.02.2013 23:02

Г-н Deff, я об этом как раз и писал, что на простом примере в простой странице - оно работает. Но если функция находится в основной странице и вызывается из фрейма - то класс из таблицы стилей не считывается.

Deff 27.02.2013 23:04

Цитата:

Сообщение от фонарик
Г-н Deff, я об этом как раз и писал, что на простом примере в простой странице - оно работает. Но если функция находится в основной странице и вызывается из фрейма - то класс из таблицы стилей не считывается.

Устанавливайте div по второму Варианту - вызовом функции установки с главной страницы!

Deff 27.02.2013 23:06

<style>
#Fonaric {
 background-color: #C1D3FB;
 top:100px;
 position:absolute;
}
.Fonaric {
 color:green;
 font-weight:700;
 height:100px;
}
</style>
<body>
<script>
function DopInfo(str){
var d=document.createElement('div');
d.id='Fonaric';
d.className='Fonaric';
d.style.left = "300px";
d.style.width = "200px";
d.style.border = "red solid 1px";
d.style.padding = "12px";
d.innerHTML = str;
document.body.appendChild(d);
}DopInfo('Привет');
</script>


<script>
function Funk0(aa) {
var a=''
var iframe = aa
var iframeDoc = iframe.contentWindow.document;
var b = iframeDoc.createElement('div');
b.innerHTML=a;//alert(b.innerHTML)
iframeDoc.body.appendChild(b);
var s = iframeDoc.createElement('script');
s.setAttribute("type","text/javascript");
s.text='parent.DopInfo("Привет");';

b.appendChild(s);
setTimeout(function() {/*alert('удаляем фрейм');*/aa.parentNode.removeChild(aa)},3000) //Удаляем фрейм
}

</script>
<iframe name=frame1 onload="Funk0(this)"></iframe>

фонарик 27.02.2013 23:22

Я все сделал по вашему примеру варианта 2: Во фрейме есть див блок у которого назначено на клик
parent.DopInfo(this)

На основной странице есть такое
<script>
function DopInfo(str){
var d=document.createElement('div');
d.className='dopInfoCSS'
d.innerHTML = str;
document.body.appendChild(d)
}
</script>
И при этом стиль не считывается :cray: Блок появляется без стиля.

Deff 27.02.2013 23:23

фонарик,
Есть Инет ссылка на реальную страницу с подобным?
Ти пробуй поставить для теста
На главную:
<style>
#Fonaric {
 background-color: #C1D3FB;
 top:100px;
 position:absolute;
}
.Fonaric {
 color:green;
 font-weight:700;
 height:100px;
}
</style>
<body>
<script>
function DopInfo(str){
var d=document.createElement('div');
d.id='Fonaric';
d.className='Fonaric';
d.style.left = "300px";
d.style.width = "200px";
d.style.border = "red solid 1px";
d.style.padding = "12px";
d.innerHTML = str;
document.body.appendChild(d);
}DopInfo('Привет');
</script>

А во фрейме
<script>
parent.DopInfo("Привет");
</script>

По крайней мере - если по Id чувствует, то можно класс добавить с главной

фонарик 27.02.2013 23:26

К сожалению, нету :( Если функцию перенести на страницу фрейма, открыть фрейм как отдельную страницу и на события клика по блоку вызвать функцию из этой же страницы - то стиль применяется.

Deff 27.02.2013 23:29

фонарик,
Суть в том, что В посте 15 делается именно так , и стиль как видишь действует

Deff 27.02.2013 23:38

http://hostjs-mybb2011.narod.ru/Div_and_Frame0.htm
Точная копия поста 17


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