Как активировать javascript-тег, извлеченный из iframe? - PullRequest
0 голосов
/ 12 января 2009

У меня есть Rich Text Editor в 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, сценарий не вызывается. Есть ли способ заставить этот скрипт работать?

1 Ответ

1 голос
/ 16 апреля 2009

Во-первых, вы, кажется, копируете код 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 .

Удачи!

...