【发布时间】:2011-02-27 19:48:50
【问题描述】:
在我的 Magento 网站中加载 jquery 时,让我的自定义 JavaScript 文件在 Google chrome 中正常运行时遇到了一点问题。这个问题似乎只出现在谷歌浏览器中。我已经在 Linux Ubuntu 10.10(chrome 10.0.648.114 beta)和 Windows XP(chrome 9.0.597.98)中测试了这个问题。 FF、Safari、IE好像没有这个问题。
当将jQuery添加到要包含的JS文件中时,我的个人JS文件在发送硬刷新时不起作用(强制对js文件进行200请求)。如果我定期刷新(js 文件的 304 请求)并从缓存中加载它,那么它可以工作。
我已经在我的 magento 站点之外创建了一个虚拟页面,当我包含来自 magento 站点的 JS 文件时,我仍然遇到这个问题。但是,如果我将 JS 文件移到 magento 站点之外,它可以正常工作吗?
我在我的 magento 管理员中禁用了缓存,据我所知,没有任何模块或自定义代码/插件会影响要包含的 JS 文件。
这是位于服务器根目录中的虚拟页面示例
gearlists.js 中唯一的东西是
alert('external');
因此,当我加载该页面时,我会看到两个警报弹出窗口。但在硬刷新时,我只会弹出一个。 “内部”。
如果我转身定期刷新,两个 JS 文件都会从浏览器缓存中加载并带有 304 状态代码,我会看到两个弹出窗口“外部”然后是“内部”
不适用于硬刷新
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://VIRTUAL_SERVER_FOR_MAGENTO_SITE/catalog/js/jquery/jquery-1.5.1.js"></script>
<script type="text/javascript" src="http://VIRTUAL_SERVER_FOR_MAGENTO_SITE/catalog/js/ads/gearlists.js"></script>
<script type="text/javascript">
alert('Internal');
</script>
</head>
<body>
</body>
</html>
始终有效
在这个例子中,如果我将 JS 文件从 magento 虚拟服务器中移出并移到我的服务器的根目录中,一切都会按预期运行。每次页面刷新都会显示两个弹出窗口
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://localhost/jquery-1.5.1.js"></script>
<script type="text/javascript" src="http://localhost/gearlists.js"></script>
<script type="text/javascript">
alert('here');
</script>
</head>
<body>
</body>
</html>
现在,如果我从测试中删除 jquery 文件,我的自定义 js 文件总是可以正常工作,无论它是否通过我的 magento VS 提供...总是有两个弹出窗口。
我有点不知道是什么原因造成的。任何想法将不胜感激。
【问题讨论】:
-
是否报告了任何 javascript 错误?这种情况下jQuery加载成功了吗?
-
我没有收到任何 JS 错误,并且 jQuery 在两个实例中都成功加载。
-
文件存放在什么文件夹中?是
catalog/js/还是 Magento 安装在catalog/中并且文件在js/中?检查他们所在的任何文件夹中的.htaccess,这可能会拒绝访问或重写。检查正在提供的文件的内容。您是否知道 Magento 带有 Prototype 并且 jQuery 需要noConflict(假设您可以使其其余部分正常工作)? -
Magento 安装在 catalog/ 并且 javascript 文件在 catalog/js/ js 文件夹中没有 .htaccess,但是我检查了 catalog/ 中的 .htaccess 文件并没有找到任何东西看起来它会影响加载。我知道magento带有原型并且不需要冲突,但在这种情况下它甚至无关紧要,因为我只是试图加载驻留在magento站点中的两个文件而不是实际加载magento页面。我很好奇这些文件是否是通过一些操纵它们的代理发送的,但似乎并非如此……我可以说出来。
-
它在某个实时链接上吗??这样调试会容易得多
标签: javascript jquery google-chrome magento