在Iframe中动态添加JavaScript并使用其中的元素调用它

时间:2014-04-01 19:37:37

标签: javascript jquery html iframe

我有一个iframe设置如下:

<iframe>
    <html>
        <head>
            <style></style>
            <script></script>
        </head>
        <body>
        </body>
    </html>
</iframe>

来自文本框的数据正被插入到页面加载中的iframe的脚本和正文标记中。

该程序将允许用户输入的Javascript和HTML在iframe中进行解析。

查看代码视图,我输入的示例函数出现在:

<iframe>
    <html>
        <head>
            <style>
            </style>
            <script>
                function say(message) {
                    alert(message);
                }
            </script>
        </head>
        <body>
            <h1 onclick="say('hello');">Click me</h1>
        </body>
    </html>
</iframe>

但是,当我点击标签时,此消息会显示在控制台中:

Uncaught ReferenceError: say is not defined

有人可以告诉我为什么会这样,以及我如何解决这个问题?

亲切的问候, 丹尼尔沃森

编辑:更正了我的标记中的错误,这不是问题,而是在尝试重新输入问题的问题时出错。

此外,使用以下代码将JavaScript函数插入到Iframe中:

$("iframe").contents().find('head script').html(data['js']);

2 个答案:

答案 0 :(得分:0)

而不是

        <style>
            function say(message) {
                alert(message);
            }
        </style>
        <script></script>
你应该

        <style></style>
        <script>
            function say(message) {
                alert(message);
            }
        </script>

此外,您有两个关闭html标记,但没有开放标记。

答案 1 :(得分:0)

这么多错误......

iframe是空的!

您无法将内容放入iframe中。你想要的是srcdoc

<iframe srcdoc="etc"></iframe>

开始标记没有斜线!

</html>

应该是

<html>

这不是一种风格!

<style>
    function say(message) {
        alert(message);
    }
</style>

错了。成功:

<script>
    function say(message) {
        alert(message);
    }
</script>