У меня есть редактор форматированного текста в Javascript, в котором я хочу иметь возможность вводить встроенный виджет в тег Javascript. То есть:
<script src = "http://www.mydomain.com/script.aspx?id=123" type = "text/javascript"></script>
Все еще используя JS, я перемещаю html-контент из iframe в DIV на странице:
<script>
function copyRtfToDiv()
{
myiframe = document.getElementById('myiframe');
postDiv = document.getElementById('blogPostDiv');
content = myiframe.contentWindow.document.body.innerHTML;
postDiv.innerHTML = content;
}
</script>
Когда контент копируется в DIV, скрипт не вызывается. Есть ли способ запустить этот скрипт?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Во-первых, похоже, вы копируете код JavaScript в теги DIV. На самом деле это не должно сработать, так как он будет обрабатывать его как обычный текст. Чтобы проиллюстрировать это, сравните эти два блока кода. Первый - это DIV:
<div>alert('hello!');</div>
И это будет выглядеть на странице примерно так:
предупреждение ('привет!');
Второй блок кода - это скрипт:
<script>alert('hello!');</script>
Откроется окно сообщения с текстом «привет!» И будет ждать, пока пользователь не нажмет «ОК». Но кроме этого, на странице ничего не будет отображаться.
Вы стремитесь ко второму варианту - тому, который фактически запускает код JavaScript, расположенный между тегами.
Я бы рекомендовал обернуть скрипт, который вы хотите вызвать, в функцию и вызывать эту функцию по имени. Допустим, у вас есть в IFRAME HTML-документ, тело которого выглядит примерно так:
<div id='jscode'>
function mycode() {
// This is some code!
alert('Hello there!');
}
</div>
Затем вы можете в родительском документе IFRAME (содержащем тег <iframe>) использовать следующий код в родительском элементе, чтобы импортировать его в родительский DOM:
function copyRtfToDiv()
{
myiframe = document.getElementById('myiframe');
content = myiframe.contentWindow.document.GetElementById('jscode').innerHTML;
newscripttag = document.createElement('script');
newscripttag.innerHTML = content;
mycode();
}
Я понятия не имею, почему вы захотите сделать что-то подобное - что по сути является изменением родительского кода JavaScript для жизни в DOM вашего документа; Есть способы сделать это лучше, не в последнюю очередь - использовать другой редактор, который можно просто вызвать извне. Например, tinyMCE и FCKEditor.
Удачи!
Итак, вы хотите ввести тег
<script>в свой редактор, который находится в iframe или содержит iframe, а затем взять его и добавить на родительскую страницу?