【问题标题】:How do I combine javascripts and load them after page load on an asp.net website?如何在 asp.net 网站上加载页面后结合 javascript 并加载它们?
【发布时间】:2012-11-02 14:47:22
【问题描述】:

我刚刚阅读了这个SE Post,它解释了所问的问题与我所问的类似。如果可能,Yslow 建议组合所有外部 javascript。根据我在某个网站上找到的一些建议,我实际上已经采用了内部 javascript 并将它们制作成一个外部 .js 文件并将其放在我的 /scripts 文件夹中。但这引出了我的 2 个(类似)问题;我认为不需要单独的帖子。

(1) - 如何组合 javascript 代码?只需留一个空行,然后将其他 javascript 复制并粘贴到另一个之后,依此类推,直到全部在一个文件中?

(2) - 我有一个带有 5 个母版页的 asp.net 网站。 5 个中有 4 个有 6 个 javascript 文件(全部缩小,有些是我自己使用的一些有效的压缩工具)。但我在 SE 帖子和在线阅读到您应该在 页面加载后加载脚本。您如何在 asp.net 网站上执行此操作?我所有的 .js 文件都在

@bluesmoon 给出了一个很好、彻底的答案,但我无法理解:

To load a script after page load, do something like this:

// This function should be attached to your onload handler
// it assumes a variable named script_url exists.  You could easily
// extend it to use an array of scripts or figure it out some other
// way (see note late)
function lazy_load() {
    setTimeout(function() {
            var s = document.createElement("script");
            s.src=script_url;
            document.body.appendChild(s);
        }, 50);
}

This is called from onload, and sets a timeout for 50ms later at which point it will 
add a new script node to the document's body. The script will start downloading after 
that. Now since javascript is single threaded, the timeout will only fire after onload 
has completed even if onload takes more than 50ms to complete.

我真的不明白他在说什么或如何实施它。仅此而已...我只需要结合javascript并在页面加载后加载它们(或它)方面的帮助;我在我的母版页或 .aspx 页面中没有看到任何“onload”字样。感谢您为我提供任何帮助或指导!

【问题讨论】:

  • 如果您合并并压缩您的 java 脚本。阅读它并不容易。我已经“压缩”了 java 脚本文件,但没有找到任何解压缩脚本的方法。可能还有其他方法可以做到这一点,例如对您的文件进行“g-zip 压缩”。您也可以在页面末尾添加脚本。
  • 感谢您抽出宝贵时间回复@krshekhar!如果出现任何问题,或者需要更改某些内容并且我认为我可以做到,我总是会备份我的原始 javascript 文件。我使用了 Fisch 的建议,并将我的所有 .js 文件放在结束正文标记的上方。该网站有 47 个页面,所有页面都正常运行。但是我会看看是否仍然值得添加我在 SE 上找到的代码 sn-p(并在我的问题中说明)。再次感谢您,我将研究 g-zip 压缩,也许将它们合并在一起以减少 http 请求的数量。

标签: javascript asp.net performance onload


【解决方案1】:

查看Cassette 并在您的结束正文标记之前呈现您的包

【讨论】:

  • 谢谢@Fisch 的链接,更重要的是知识!无论出于何种原因,我一直认为 javascript 属于您的结束头标记,但我更改了所有 5 个母版页,并且一切正常,而且我在 Google 的速度测试中没有收到该错误消息。感谢您抽出宝贵时间阅读我的问题并做出回应!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2011-10-07
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多