Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 16.11.2017, 18:01
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

На самом деле я ужасно понимаю происходящее, и могу легко понести ахинею.
Ответить с цитированием
  #12 (permalink)  
Старый 16.11.2017, 19:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Можно так попробовать:
<!DOCTYPE html>
<html>
<head>
	<title>Untitled</title>
	<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
	<script type="text/javascript">
		$(function(){
			$('input[name=sw]').click(function(){
			  var v =$(this).val();
			  $('#one,#two,#three').hide().filter('#'+v).show();
			  if(v!='three')
				return;
				
			  $(document).ready(function(){
				$("#three").load("3.html pre",function(){
					var css=['styles/shCore.css','shThemeDefault.css'],
						js=['shCore.js','shBrushCss.js','shBrushXml.js','shBrushJScript.js'],
						load_hundler=function(){
							if(++counter==total)
								SyntaxHighlighter.all();
						},
						total=css.length+js.length,
						counter=0;
					
					for(var i=0;i < css.length;i++){
						var node=document.createElement('link');
						node.rel='stylesheet';
						node.href='syntaxhighlighter/styles/'+css[i];
						node.onload=load_hundler;
						document.head.appendChild(node);
					};
					for(i=0;i < js.length;i++){
						var node=document.createElement('script');
						node.href='syntaxhighlighter/scripts/'+js[i];
						node.onload=load_hundler;
						document.head.appendChild(node);
					};
				});
			  });
			});
		});
	</script>
</head>
<body>
	<input type="radio" name="sw" value="one" id="x1"><label for="x1">1</label>
	<input type="radio" name="sw" value="two" id="x2"><label for="x2">2</label>
	<input type="radio" name="sw" value="three" id="x3"><label for="x3">3</label>
	<div id="one" class="none"></div>
	<div id="two" class="none"></div>
	<div id="three" class="none"></div>
</body>
</html>

В 3-х вещах не уверен:
1. jq.load может не разобрать кашу из html в файле 3.html;
2. jq.load по селектору может вернуть только inner html;
3. в функции load_hundler переменные counter и total могут отсутствовать.
Ответить с цитированием
  #13 (permalink)  
Старый 16.11.2017, 20:45
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Nexus,
Так не засветилось.
Ответить с цитированием
  #14 (permalink)  
Старый 16.11.2017, 20:49
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

daslex, смотрите консоль.
Гадать причину желания нет.
Ответить с цитированием
  #15 (permalink)  
Старый 16.11.2017, 20:50
Кандидат Javascript-наук
Отправить личное сообщение для daslex Посмотреть профиль Найти все сообщения от daslex
 
Регистрация: 17.04.2015
Сообщений: 125

Да ладно. Сделаю на iframe. Ничего страшного не произойдёт. Только со стилями возиться придётся.

Последний раз редактировалось daslex, 16.11.2017 в 21:16.
Ответить с цитированием
  #16 (permalink)  
Старый 17.11.2017, 09:20
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

daslex, как знаете.
По идее того, что я написал должно быть достаточно, т.е. "победа близка".
Нужно только выяснить, что пошло не так.
Ответить с цитированием
  #17 (permalink)  
Старый 17.11.2017, 10:38
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

daslex,
Я попробовал вариант по пост№6, но не со статичным содержимым, а с подгрузкой текста, который нужно подсветить, в обертке pre, например, такой файл:
<pre class="brush: html">                                    
	  <div class="wraperr2">
	      <div class="lefmenu">Hello world </div>
	      <div class="content"> </div>
	  </div>
  </pre>

и последующим запуском SyntaxHighlighter.all() - почему-то не срабатывает, обертка pre не преобразуется и подсветки нет.
Чем-то добавленный фрагмент ему не нравится.
М.Б. стоит попробовать не .html(html), а appendChild. Попробую - отпишусь.

Последний раз редактировалось Dilettante_Pro, 17.11.2017 в 10:43.
Ответить с цитированием
  #18 (permalink)  
Старый 17.11.2017, 11:03
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Обнаружил странную вещь:
Вот такой вариант работает:
<head>
<meta charset="UTF-8">
	<link rel="stylesheet" href="syntaxhighlighter/styles/shCore.css" type="text/css">
	<link rel="stylesheet" href="syntaxhighlighter/styles/shThemeDefault.css" type="text/css">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script  type="text/javascript" src="syntaxhighlighter/scripts/shCore.js"></script>
	<script  type="text/javascript" src="syntaxhighlighter/scripts/shBrushCss.js"></script>
	<script  type="text/javascript" src="syntaxhighlighter/scripts/shBrushXml.js"></script>
	<script  type="text/javascript" src="syntaxhighlighter/scripts/shBrushJScript.js"></script>
    <script>
        $(document).ready(function () {
          //  $('input[name=sw]').click(function () {
                       SyntaxHighlighter.all();
          //  });
        })
    </script>
 </head>
 <body>
<input type="radio" name="sw" value="1" id="x1"><label for="x1">1</label>
<input type="radio" name="sw" value="2" id="x2"><label for="x2">2</label>
<input type="radio" name="sw" value="3" id="x3"><label for="x3">3</label>

<div id="one">
   	  <pre class='brush: html'>
         alert("Victory");
      </pre>
</div>
</body>

Убираю // - по клику не работает.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При передаче кода fancybox в div через .load из div другого файла не всплывает модаль alanat Ваши сайты и скрипты 1 02.07.2016 00:31
Подгрузка кода в js из другого файла candro Общие вопросы Javascript 1 04.03.2015 13:11
Как вызвать скрипт из файла внутри js кода? Hurray Общие вопросы Javascript 6 30.03.2014 19:08
Рег.выражения, подсветка кода lynch1 Events/DOM/Window 6 17.12.2012 20:04
Подгрузка информации через DIV с обработкой файла на стороне сервера Azartno jQuery 1 26.05.2012 15:07