在我的Magento网站上加载jquery时,让我的自定义JavaScript文件在Google Chrome中玩得很好,我遇到了一些问题。此问题似乎只出现在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服务......总会有两个弹出窗口。
我有点卡在可能造成这种情况的地方。任何想法都将不胜感激。
答案 0 :(得分:2)
好的,我想出来了。愚蠢的错误,但它花了一些时间。文件的目录是站点名称js/ads/gearlists.js
我的adblock扩展程序使用正则表达式查找“广告”一词,并将我的脚本过滤掉。当我将目录从广告调整为 adsinc 时,问题就消失了。
因为我的chrome扩展程序已同步,因此id在linux或windows中无效。
答案 1 :(得分:1)
两个提示:
您可能希望在Magento Connect上安装mxperts jquery插件扩展 - 它是免费的,可以帮助调试人们在Magento站点上放置的jquery脚本。
Google Chrome无法更新缓存 - 您可以重命名js文件,然后加载新文件。