Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2015, 14:51
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

ckeditor, исполняемый жс
Есть один движок, в качестве редактора используется ckeditor 4 не понятной подверсии (переписали, и удалили информацию о версии). Поставил для него плагин codesnippet, он свою очередь потребовал плагины widget и lineutils. Их поставил, там дальше ругается:
Код:
Uncaught TypeError: CKEDITOR.style.addCustomHandler is not a function
Uncaught TypeError: CKEDITOR.tools.objectKeys is not a function
Вообщем забил. Решил более старый плагин поставить pbckcode, работает как бы. После сохранения в редакторе на странице код выводится просто внутри тега <pre></pre>.

Дальше хочу сам доделать, как сделать, допустим в этот пре добавлю уникальный id и создаю кнопку <input type="button" class="run-button" value="Запустить!">

function runjs() {
      var jsss = this.innerUTML();   
}


Вопрос такой, как заставить исполнится содержимое jsss интерпретатором, как в этом форуме?

Последний раз редактировалось ild, 26.08.2015 в 14:55.
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2015, 15:01
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

<script>
  var start = function () {
  var iframe = document.createElement('iframe');
  document.body.appendChild(iframe);
  iframe.contentDocument.write('<scr' + 'ipt>alert("start!")</scr' + 'ipt>');
};
</script>
<button onclick='start();'>start</button>
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2015, 15:29
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

хитро. Спасибо. Через время только доперло, сначала прочитал scr как src, думал что за ipt
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2015, 15:32
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

ild,
Есть и другие варианты. Например eval, но через iframe наиболее безопасно и можно запускать примеры с версткой.
Вроде. Вообще подобным не занимался, может кто предложит более безопасный способ. Запускать чужие скрипты на своем домене - всегда риск.
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2015, 15:43
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

так то пока попадает в базу, проходить санетизацию. Хотя хз

Последний раз редактировалось ild, 30.08.2015 в 18:04.
Ответить с цитированием
  #6 (permalink)  
Старый 30.08.2015, 20:09
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

А есть другие идеи без ифрейма? Ведь, допустим в коде будет вывод только console.log(), там же ифрейм не нужен фактически
Ответить с цитированием
  #7 (permalink)  
Старый 30.08.2015, 21:16
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

вот думаю, если внутри <pre> обворачивать невидимым

function runjsID(){
    <pre>
         исполняемый код
    </pre>
}


тогда функцию можно заставить вызвать, только опять, все это должно быть внутри <script> что тоже не вариант, исходный код будет не видно
Ответить с цитированием
  #8 (permalink)  
Старый 31.08.2015, 10:19
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

ild,
Ну например так можно:
eval('alert(2)');
Ответить с цитированием
Ответ



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

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