【问题标题】:Howto activate javascript-tag fetched from iframe?如何激活从 iframe 获取的 javascript-tag?
【发布时间】:2009-07-31 16:00:02
【问题描述】:

我有一个 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 时,不会调用脚本。有没有办法让这个脚本运行?

【问题讨论】:

  • 所以你想在你的编辑器中输入&lt;script&gt;标签,它在一个iframe中或包含iframe,然后把它抓出来并添加到父页面?

标签: javascript iframe rtf


【解决方案1】:

首先,您似乎正在将 JavaScript 代码复制到 DIV 标记中。那不应该真正起作用,因为它只会将其视为常规文本。为了说明,比较这两个代码块。第一个,是一个 DIV:

<div>alert('hello!');</div>

它会在页面上看起来像这样:

alert('你好!');

第二段代码,是一个脚本:

<script>alert('hello!');</script>

这将打开一个带有文本“你好!”的消息框,并等待用户单击“确定”。但除此之外,不会在页面中显示任何内容。

您的目标是第二个选项 - 一个实际运行位于标记之间的 JavaScript 代码的选项。

我建议将您要调用的脚本包装在一个函数中,然后按名称调用该函数。因此,假设您在 IFRAME 中有一个 HTML 文档,其正文如下所示:

<div id='jscode'>
   function mycode() {
       // This is some code!
       alert('Hello there!'); 
   }
</div>

然后,您可以在 IFRAME 的父文档(包含 &lt;iframe&gt; 标记的文档)中使用父文档中的以下代码将其导入到父文档的 DOM:

function copyRtfToDiv()
{
    myiframe = document.getElementById('myiframe');
    content = myiframe.contentWindow.document.GetElementById('jscode').innerHTML;
    newscripttag = document.createElement('script');
    newscripttag.innerHTML = content;
    mycode();
}

我不知道你为什么要做这样的事情 - 这基本上是重新设置 JavaScript 代码以存在于你的文档的 DOM 中;有更好的方法可以做到这一点,尤其是使用可以简单地从外部调用的不同编辑器。例如,tinyMCEFCKEditor

祝你好运!

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多