我正在使用带有 W3 Total Cache 和响应式布局(媒体查询)的 WP Mobile Detector,但我遇到了一些问题:
当我在黑莓上查看本地站点(本地主机)时,它看起来不错;缩放/视口正确,媒体查询已正确触发等。但是,当我在黑莓上查看实时站点时,视口已缩小。在响应式布局的上下文中,我在本地看到两列,但在现场我看到所有六列(即黑莓认为它是一个完整的浏览器 - 很烦人!)。
我想我会停用 W3 Total Cache 以查看是否有任何效果:是的,确实如此。当缓存关闭时,视口/缩放很好,一切都很好。问题解决了?不完全的...
关闭缓存后,我导航到实时站点,当我单击链接时,当站点的子页面(例如 www.SITE.com/about、www.SITE.com/contact)响应移动主题时回到家(或在地址栏中输入) - 即 www.SITE.com/ - 我不再提供移动主题,只是普通的“桌面”主题。如果我返回子页面,我会再次看到移动主题。那是怎么回事。
当在黑莓上查看时(例如),如果我单击“查看完整站点”链接(触发 Javascript 函数来修改 cookie)它不会显示完整站点(即正常主题),它只是刷新并显示移动主题。但是,当在桌面上的 Firefox 中查看时(通过用户代理切换器),该链接确实会修改 cookie 并切换回正常的桌面主题。
想法/问题
W3TC 确实适用于 WPMD(移动主题提供缩小的 JS/CSS),但也许我没有正确配置一些东西。以下两个链接非常有用,我已经实施了建议的更改:--- http://snipplr.com/view/47970/wp-mobile-detector--w3-total-cache-integration/ --- http: //journal.code4lib.org/articles/6223
这是一个已知的 [Blackberry HotSpot/Internet Browser] 问题吗?我在文档头中添加了必要的元标记来指示视口数据,我理解的 HandheldFriendly 元数据主要用于黑莓目的。正如我所说,除了主页问题之外,关闭缓存看起来没问题。
我应该说它在将用户代理切换器扩展设置为 iPhone 3 的 Firefox 中运行良好,而且我没有任何黑莓问题。
WPMD 通过设置 cookie 工作。这似乎有效,否则我根本不会看到移动主题。
黑莓的Javscript功能有问题吗?从手机本身不容易分辨 - 可能需要放入一个 JS 错误监视器(前几天我在看一个)。
谁会想到移动开发会如此棘手!
更新 1
从第一次发布到现在已经有几个星期了,我很快就会按照 Joshua 和 Frederick 的建议卸载并重新安装 W3TC [最新版本],然后我会发布我的结果。
我发现不同的浏览器(桌面和移动)对 javascript 重定向语句的处理方式不同。例如:
setTimeout(function(){window.location.reload();},10)
window.location.reload();
location.reload();
上面的三行代码有效地执行了相同的操作(实现方式略有不同,具体取决于您的需要),但我在使用每一个的浏览器中取得了不同的成功——Chrome 与一个,Firefox 另一个,等等。不幸的是,我仍然无法获得黑莓浏览器通过 Javascript 执行适当的自动刷新。
还有什么...所以,事实证明,使用台式 PC/浏览器在台式机和移动设备之间切换很有趣。假设我们在桌面版本,我们切换到页面的移动版本。到目前为止我们还可以,但随后我们切换回页面的桌面版本。仍然可以,但是如果我们快速单击桌面页面上的链接以转到另一个 [桌面] 页面,那么我们可能会发现自己正在查看移动版本而不是桌面版本。
那么,那里发生了什么?由于当我们单击另一个链接时页面仍在加载,我们是否中断了什么?可能不会,因为 cookie 会在先前的请求中从移动版本的页面设置并发送,例如“show-desktop-version = true”。如果我们确实点击了 F5 或浏览器的“刷新”按钮(或者,实际上是指向任何其他页面的链接),那么我们确实会看到正确的移动版本或桌面版本(分别)。
另一件有趣的事:假设我们使用的是移动版本(使用桌面浏览器),我们正在查看 site.com/mypage,页面上有一个指向“查看完整站点”(VFS) 的链接。我们单击 VFS 一次,它会刷新,但我们仍然看到移动版本。所以我们再次点击——同样的结果。所以我们一次又一次地点击,一次又一次,然后——哦,好吧,这次它切换到了完整的站点。这个循环/过程似乎发生了一次,然后不是一段时间,然后再次发生。
更新 2
关于移动桌面主题切换问题,请忽略我在“更新1”中的说明。我的切换器链接之一(从桌面主题到移动),例如...
<a href="?dothemeswitch" onClick="funcSwitchToMobile()">View Mobile Site</a>
...正在使用查询参数(如您所见)。我曾使用此技术测试移动浏览器是否阻止正确刷新,因为链接指向相同/当前的 URL。切换器链接实际上应该是这样的,
<a href="#" onClick="funcSwitchToMobile()">View Mobile Site</a>
...只需一个散列即可允许链接可点击,同时允许 Javascript 函数发挥其魔力(更新 cookie、重新加载页面)。
问题已解决。
(W3TC + WPMD 兼容性对我来说仍然是一个问题 - 将发布更新)。