【问题标题】:document.write extremely slow except in Firefoxdocument.write 非常慢,除了 Firefox
【发布时间】:2013-09-23 09:40:42
【问题描述】:

我需要打开一个新窗口并在上面写一些 html/css。这是我用来完成此操作的代码:

                myHTML = '...' //Around 400 bytes of html and styling
                var doc = window.open('', 'preview', 'width=1200,height=600,scrollbars=1');
                doc.document.write(myHTML);
                doc.focus();
                $(window).unload(function() {
                        doc.close();
                });

我遇到的问题是,即使 Firefox 打开新窗口并立即写入/解析 html/css,立即将其显示给用户,Chrome 和 Safari 也需要大约 5 秒来显示它。

为什么会这样?有什么建议的解决方法吗?

【问题讨论】:

  • 你能发布一个实际的 HTML 数据示例吗?
  • 也许doc.document.close();在你写完之后?
  • doc 是一个令人困惑的窗口名称:请将其重命名为其他名称,例如 preview。
  • 我试过 doc.document.close() 但它没有解决问题。
  • 你将不得不展示一个 jsfiddle 或一些页面来展示这个问题。我做了一个测试页面,这个页面包含在一个我称之为 onclick 的函数中,它立即显示“...”。 myHTML 是否真的是类似于 js 的其他东西,它正在发出并等待来自其他东西的请求?

标签: javascript jquery html css performance


【解决方案1】:

感谢 cmets...我打算做一个 jsfiddle,但该网站暂时关闭了...现在又回来了,但我解决了这个问题。问题是 HTML 中的这一行:

<link rel="stylesheet" type="text/css" href="~/templates/preview.css" />

由于某种原因,Chrome/Safari 需要一些额外的时间来解析它。我把它改成:

<link rel="stylesheet" type="text/css" href="http://www.fulldomain.com/templates/preview.css" />

现在一切正常。

【讨论】:

    猜你喜欢
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 2015-06-14
    相关资源
    最近更新 更多