Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   не все стили "срабатываеют" для ifraime? (https://javascript.ru/forum/events/40875-ne-vse-stili-srabatyvaeyut-dlya-ifraime.html)

Kvark 22.08.2013 19:16

не все стили "срабатываеют" для ifraime?
 
3 часа бьюсь не могу понять, есть страница, на ней создаеться фрейм, я в него добавляю свои стили так:

var innerDoc = frames[0].document;
	var cssLink = document.createElement("link") 
	cssLink.id = "xtheme";
	cssLink.href = "style.css"; 
	cssLink.rel = "stylesheet"; 
	cssLink.type = "text/css"; 
	innerDoc.getElementsByTagName('body')[0].appendChild(cssLink);


и странно что срабатывают скажем такие как p, span, а ругие нихотят :-?
как такое может быть?

Deff 22.08.2013 22:34

Kvark,
А из фрейма, в качестве проверки, считать контент - можете ?
И не проще ли делать по имени фрейма и onload ?
И var cssLink = document.createElement("link") нужно создавать на доке фрейма => var cssLink = innerDoc.createElement("link")
<script type="text/javascript">
  function content (){ /*==123==;
  <head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<meta name="google-site-verification" content="v9Kpfc51FlFjvXEBq1t0zJH__JPx58kMVJWNOYFScLI" />
<meta name="yandex-verification" content="6a5a572f1bb19704" />
<title>Единый форум поддержки</title>
<!--/noindex-->
<link rel="stylesheet" type="text/css" href="http://st1.bbcorp.ru/style/Mybb_Bend/Mybb_Bend.css" />
<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="http://st1.bbcorp.ru/style/style_fix.css" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" type="text/css" href="http://st1.bbcorp.ru/style/style_fix7.css" /><![endif]-->
<link rel="stylesheet" type="text/css" href="http://st1.bbcorp.ru/style/extra.26.css" />
</head>
<div id="pun_wrap">
<div id="pun">
<div id="pun-index" class="punbb">


<div id="html-header">

</div>

<div id="pun-title" class="section">
	<table id="title-logo-table" cellspacing="0">
		<tbody id="title-logo-tbody">
			<tr id="title-logo-tr">
				<td id="title-logo-tdl" class="title-logo-tdl">
					<h1 class="title-logo"><span>Единый форум поддержки</span></h1>
				</td>
				<td id="title-logo-tdr" class="title-logo-tdr"></td>
			</tr>
		</tbody>
	</table>
</div>

<div id="pun-navlinks" class="section">
	<h2><span>Меню навигации</span></h2>
	<ul class="container">
		<li id="navindex"><a href="http://forum.mybb.ru/"><span>Форум</span></a></li>
		<li id="navuserlist"><a href="http://forum.mybb.ru/userlist.php" rel="nofollow"><span>Участники</span></a></li>
		<li id="navrules"><a href="http://forum.mybb.ru/misc.php?action=rules" rel="nofollow"><span>Правила</span></a></li>
		<li id="navsearch"><a href="http://forum.mybb.ru/search.php"><span>Поиск</span></a></li>
		<li id="navprofile"><a href="http://forum.mybb.ru/profile.php?id=22787"><span>Профиль</span></a></li>
		<li id="navpm"><a href="http://forum.mybb.ru/messages.php"><span>Сообщения</span></a></li>
		<li id="navlogout"><a href="http://forum.mybb.ru/login.php?action=out&amp;id=22787"><span>Выход</span></a></li>
	</ul>
</div>

<div id="pun-ulinks" class="section">
	<h2><span>Пользовательские ссылки</span></h2>
	<ul class="container">
		<li class="item1"><a href="http://forum.mybb.ru/search.php?action=show_new">Новые сообщения</a></li>
		<li class="item2"><a href="http://forum.mybb.ru/search.php?action=show_24h">Активные темы</a></li>
		<li class="item3"><a href="http://forum.mybb.ru/search.php?action=show_unanswered">Темы без ответов</a></li>
		<li class="item4"><a href="http://forum.mybb.ru/search.php?action=show_user&amp;user_id=22787">Мои сообщения</a></li>
		<li class="item5"><a href="http://forum.mybb.ru/search.php?action=show_subscriptions">Подписка</a></li>
		<li class="item6"><a href="http://forum.mybb.ru/misc.php?action=markread">Все прочитано</a></li>
	</ul>
</div>


<div id="pun-status" class="section">
	<h2><span>Информация о пользователе</span></h2>
	<p class="container">
		<span class="item1">Привет, <strong>Deff</strong>.</span> 
		<span class="item2">Ваш последний визит: <strong>Сегодня 19:55:23</strong>.</span>
	
		<span class="item3" style="float:right">В фонде форума: <strong>1664.43</strong> кредитов. <a href="/foundation.php">Помочь форуму</a>.</span>
	</p>
</div>

<div id="pun-break1" class="divider"><hr /></div>

<div id="pun-crumbs1" class="section">
	<p class="container crumbs"><strong>Вы здесь</strong> » <span>Единый форум поддержки</span></p>
</div>

<div id="pun-break2" class="divider"><hr /></div>

<div id="pun-main" class="main">
	<h1><span>Форум</span></h1>
	<div id="pun-category1" class="category">
		<h2><div class="catleft"><!-- --></div><span>Информационный раздел</span><div class="catright"><!-- --></div></h2>
		<div class="container">
			<table cellspacing="0" summary="Список форумов в категории: Информационный раздел">
			<thead>
				<tr>
					<th class="tcl" scope="col">Форум</th>
					<th class="tc2" scope="col">Тем</th>
					<th class="tc3" scope="col">Сообщений</th>
					<th class="tcr" scope="col">Последнее сообщение</th>
				</tr>
			</thead>

			</table>
		</div>
	</div>

</div>



<div class="section">
	<div id="tieser-bottom" class="container" align="center">

	</div>
</div>

<div id="pun-break3" class="divider"><hr /></div>

<div id="pun-crumbs2" class="section">
	<p class="container crumbs"><strong>Вы здесь</strong> » <span>Единый форум поддержки</span></p>
</div>

<div id="pun-break4" class="divider"><hr /></div>

<div id="pun-about" class="section">
	<p class="container">
		<span class="item1" style="padding-left:0"><a title="фотохостинг" href="http://uploads.ru/" target="_blank">фотохостинг</a> • <a title="создать форум" href="http://mybb.ru/" target="_blank">создать форум</a></span>
	</p>
</div>

<!-- pun_debug -->



</div>
</div>
</div>

     ==123==;*/
  } content = content.toString().split('==123==;')[1];


function Fload (fram){
   var frameDoc = fram.contentWindow.document;
  var div = frameDoc.createElement("div");
  div.innerHTML = content;
  frameDoc.body.appendChild(div);
  var script = frameDoc.createElement("script");
  script.src = "http://yandex.st/jquery/1.4.4/jquery.min.js";
  frameDoc.body.appendChild(script);
  var script2 = frameDoc.createElement("script");
  script2.text ="alert('Cообщение из фрейма: #pun-main.html =' +$('#pun-main').html())";
  alert(fram0.document.body.innerHTML);
  setTimeout(function (){frameDoc.body.appendChild(script2);},1000);
  
}
</script>

<iframe name="fram0"  onload="Fload (this)" width=100%  height=700></iframe>

danik.js 23.08.2013 04:58

Deff, а че это за извращения с js-комментарием?
Чем тебе тег <script type="text/html"> не устраивает для этой цели?

Deff 23.08.2013 11:25

danik.js, хм - а изобрази со своей идеей единый подгружаемый скрипт, иной бы, devote, к примеру, поблагодарил бы

Kvark 23.08.2013 12:47

Цитата:

Сообщение от Deff (Сообщение 268862)
Kvark,
А из фрейма, в качестве проверки, считать контент - можете ?
И не проще ли делать по имени фрейма и onload ?
И var cssLink = document.createElement("link") нужно создавать на доке фрейма => var cssLink = innerDoc.createElement("link")
[/html]

Да, считать могу, правда доступ получаю только через:
var innerDoc = frames[0].document;
по другому выдает что неопределен, хотя сам фрейм по ид находит, сложность с ид что оно меняется в зависимости от страницы, единственное что этот фрейм всегда первый.

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

поправил создание - спасибо - так более правильно и логично, но все равно не помогло...

да, и мне без джиквери нужно обходиться - каждый кб насчету :)

Deff 23.08.2013 12:55

Цитата:

Сообщение от Kvark
но не пойму почему стили отваливаються - если смотрю через дебагер - показывает наследованые стили от родителя (у которого тот же стилевой файл) но ненаходит соотвествие классов и ид

Еще раз: - тег стиля нужно создавать на документе ифрейма, а не на текущем, любые теги всовываемые в ифрейм создаём на документе ифрейма!

2- по опыту лучше ставить onload cразу на тег (Если ток вы не создаете фрейм сами) - ибо фрейм может уже загрузиться пока вы думаете ставить на него событие и тогда срабатывания не будет... Вон Вам дал живой пример, и функция обработки лучше до установки самого ифрейма

Kvark 23.08.2013 12:59

так яж говорю поправил это, все равно не срабатывает - первый раз с таким сталкнулся...

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

Deff 23.08.2013 13:10

Kvark,
1. Если видите - стиль в моём примере подгружен и не один!
2. Проще, когда фрейм загружен обращаться к фрейму через name
alert(name.document.body.innerHTML);

Kvark 23.08.2013 13:20

емм Слона то я и не заметил - изучаю пример (ну вы его и спрятали :) я думал это ваша подпись)

Deff 23.08.2013 13:22

Цитата:

Сообщение от Kvark
даже если я этот стиль добавляю в страницу (которая во фреме грузиться) несрабатывают, если перетаскиваю из фрема - все ок - бред какойто

Стиль, добавляемый через link - должен еще подгрузиться на страницу, проще добавить стиль тегом <style>, если контент небольшой


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