使用包含内联脚本的HTML代码替换完整的HTML文档

时间:2015-06-19 09:05:46

标签: javascript html

我有以下代码,可以在chome中正常使用

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
    //<![CDATA[
        !function (){
            window.stop();
            var html = '<!DOCTYPE html>\n<html>\n<head>\n    <meta charset="utf-8">\n</head>\n<body>\n  \<script>console.log("loaded");<\/script>\ntext\n</body>\n</html>';
            document.documentElement.innerHTML = html;
        }();
    //]]>
    </script>
</body>
</html>

它在控制台中打印“已加载”。 firefox不能使用相同的代码,它不运行脚本,只打印文本。

(如果你很好奇我为什么需要这个,你可以在这里找到它:https://stackoverflow.com/a/30933972/607033

我尝试过这样的可能解决方案:https://stackoverflow.com/a/20584396/607033但它们不起作用。知道如何解决这个问题吗?

注意:HTML中有许多脚本,例如bootstrap,jquery,facebook,google等...,而不仅仅是一个内联脚本。

1 个答案:

答案 0 :(得分:0)

我认为firefox无法在不离开实际页面的情况下用javascript替换完整的HTML文档。重用原始文档并仅替换head和body标记的解决方法:

$('html').html(html);

自动执行此操作:它会删除HTML标记,注入头部和正文并加载脚本。

参考:https://stackoverflow.com/a/1236372/607033