Вопрос: Клик по div. Открыть окно, вписать текст, подсветить код
Сайт на Wordpress. Там плагин подсветки кода Crayon Syntax Highlighter.
Моя задача такая, чтобы при клике на определенный текст, открывалось окно и в него вписывался подсвеченный код.
Я этот текст под клик, вгоняю в тег <div></div>, после чего создаю для него событие на "клик мыши", в котором вызываю функцию, где открывается окно и в это окно вписывается текст.
Моя проблема в том, что текст должен быть в виде HTML с подсвеченным кодом, а я получаю обычный текст.
Ниже рисунки, показывающие проблему.
Так я получаю текст из файла в переменную. Файл на сервере.
Код PHP |
1
2
3
| <?php
$arr[] = str_replace('</script>','</s" + "cript>',htmlspecialchars(addslashes(file_get_contents("MyFile.php"))));
?> |
|
Так я делаю функцию, которая должна открыть окно и вписать в него текст, внутри которого должна сработать подсветка.
Код Javascript |
1
2
3
4
5
6
| <script type='text/javascript' >
function MyFunc(S){
var NewWin=window.open('','','...');
NewWin.document.write(S);
}
</script> |
|
И так я делаю событие "клик для div" (я не знаю как это называют).
Код HTML5 |
1
2
3
4
5
6
| <div id="id2" >
Кликни меня<br />
<script type='text/javascript'>
document.getElementById("id2").onclick = MyFunc.bind(null,<?php echo json_encode($arr[0]); ?>);
</script>
</div> |
|
текст файла
<HTML><body>
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<meta http-equiv='content-type' content='text/html; charset=utf-8'>
<link href='http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/scripts/shCore.js' type='text/javascript'></script>
<script src='http://ci-plus-plus-snachala.ru/syntaxhighlighter_3.0.83/scripts/shBrushCpp.js' type='text/javascript'></script>
<script language='javascript'>
SyntaxHighlighter.all();
</script>
<!----------------КОД----------------------------->
<pre class='brush: cpp'>
#include <iostream>
using namespace std;
int main(){
setlocale(LC_ALL,""
int Height,Weight;
cout<<"Введите Ваш рост и вес:\n";
cin>>Height>>Weight;
cout<<"Ваш рост: "<<Height<<endl;
cout<<"Ваш вес: "<<Weight<<endl;
}
</pre>
<!----------------КОД----------------------------->
</body></HTML>
рис. слева - получается. рис справа изначальная страница, которая сама по себе такая и которая должна отображатся в открытом окне.
Ответ: Чтобы как-то было проще мне помочь, сделаю вот что.
Чистый WordPress на локальный ПК. (Полагаю, многие имели опыт работы с этой cms).
Там плагин для работы с php
И одна папка, в которой файл. Текст этого файла должен отобразиться в новом окне, а листинг из того файла должен подсветиться.
Я использую xammp.
Прикрепляю 2 файла.
1 - это сам wordpress с плагином и моим файлом.
2 - это бд (для импорта).
ну и текст может покорежится, поэтому вот это весь текст в записи:
Код HTML5 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?php
$arr[] = str_replace('</script>','</s" + "cript>',htmlspecialchars(addslashes(file_get_contents("MyFiles/MyFile.php"))));
?>
<script type='text/javascript' >
function MyFunc(S){
var NewWin=window.open('','','...');
NewWin.document.write(S);
}
</script>
<div id="id2" >
<b>Кликни меня</b><br />
<script type='text/javascript'>
document.getElementById("id2").onclick = MyFunc.bind(null,<?php echo json_encode($arr[0]); ?>);
</script>
</div> |
|
Все, что мне нужно, это чтобы сработала подсветка в открываемом окне.