0

我有两个 html 文件 Parent.html 和 Child.html。Parent.html 在 iframe 中导入 jquery.js 文件和 Child.html。

父.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script>
$('body').click(function() {
 alert("asdgaskdj");
});
</script>
</head>
<body>
<!--Parent do  some thing-->
<iframe id="workspace"  style="width:100%;height:100%;overflow:auto;" src="Child.html">
</iframe>
</body>
</html>

Child.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
$('body').click(function() {
 alert("asdgaskdj");
});
</script>
</head>
<body>
<!--child do some thing-->
</body>
</html>

我的问题已经是 jquery 已由 Parent.html 导入我应该在 Child.html 中再次导入它吗

如果我不导入 Child.html 它显示 $ 未定义。

Parent.html 已经导入了 255KB 的 js 文件。Child.html 也想做同样的事情。如果是这样,则必须从服务器再次下载 255kb 的文件。是否有任何其他方法可以达到解决方案。

请帮忙!!!!

4

3 回答 3

1

您必须包含它两次,但服务器会缓存它。所以客户端第一次下载了255KB,记得已经下载了文件,所以不会再下载了。

另请参阅w3c 规范和本教程。您必须将以下几行(例如)添加到您的 .htaccess 以启用缓存(大多数网络托管商默认启用它):

 # Cache all your static assets for 1 month
 <filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
 Header set Cache-Control "max-age=2592000, public"
 </filesMatch>

此外,您可以启用 gzip 压缩,这将进一步减少流量。本教程中对此进行了描述。

于 2013-08-14T11:41:46.017 回答
0

坏消息:您需要在需要它的每个帧中加载 jQuery 库。

好消息:浏览器会知道它已经请求过它,所以只需使用它的缓存副本而不是重新加载它。

您还可以进行进一步的改进:

  • 如果您确保您使用的是 jQuery 的缩小版本,它将显着降低您的下载大小 - 1.10.2 从 97KB 变为 38KB。
  • 如果启用 gzip 压缩,则在下载过程中会压缩文件,从而节省额外带宽。
  • 如果您使用 CDN(例如 Google),您可能会受益于用户已经拥有另一个站点引用的 jQuery 缓存副本。结果,他们根本不需要下载它——它已经在那里了。
于 2013-08-14T11:42:25.757 回答
0

您不想在 child.html 中再次包含 jQuery 插件。

只需在访问父 jQuery 插件window.parent之前插入。$

Child.html

<script>
  window.parent.$('body').click(function(){
      alert("asdgaskdj");
  });
</script>
于 2017-12-07T13:06:30.177 回答