javascript - Kindle 实验性浏览器将网页中包含的所有 javascript 错误时间提前 7 小时 - 如何抵消?
问题描述
我通过他们的“实验浏览器”将旧 Kindle 回收到迷你气象站。我创建了显示日期和时间的网页,以及我放入 iframe 中的天气数据,以便与 Kindle 浏览器一起使用。在我使用 Kindle Voyage 浏览器遇到奇怪的问题之前工作得很好。
这就是我在自定义 iframe 中用于天气的方法。
https://forecast.io/embed/#lat=39.742043&lon=-104.991531&name=丹佛
我的第一个奇怪的线索是我之前在其他 Kindle 上成功使用过的这个日期和时间javascript 片段的时间已经关闭了 +7 小时。换句话说,当它是下午 4 点时,浏览器正在告诉页面内的所有 javascript 内容它的渲染它是晚上 11 点等等。
我仔细检查了Kindle时间,它是正确的。然后我尝试通过手动更改整个 Kindle -7 小时的时间来抵消时间,但它并没有改变浏览器问题。
我终于调整了日期和时间 javascript 片段以将时间偏移 7 小时以修复时间的显示。
然而,Kindle Voyage 的浏览器也将 iframe 中的天气提前了 7 小时,并导致 iframe 中的天气提前了 7 小时。它会导致天气代码在下午 5 点之后变得不稳定,因为浏览器会让它相信是第二天(提前 7 小时)。我无法直接访问任何代码来抵消时间,所以我需要以某种方式抵消我的网页或服务器上的 7 小时。
我尝试使用各种 SetEnv TZ 时区更改 .htaccess 文件中的时区,但它对 javascript 及时输出和 iframe 内的天气没有影响。
有没有办法使用 javascript 来强制页面中的所有 javascript 来抵消浏览器报告的时间?还是有其他方法可以解决这个问题?
我难住了。
更新/编辑 -
从来没有想出一个答案,所以我创建了一个时间敏感的 javascript,我偏移了 7 个小时,以覆盖天气图表上的不同日期。这是我使用的一些代码片段,以防有人好奇。我旋转了所有内容,因为由于某些原因,亚马逊现在也不允许您在 Voyage 上以横向模式查看浏览器,所以我只是将整个页面放在一边。
从丹佛时间下午 5 点到午夜,覆盖处于活动状态。如果您注意到代码中的时间 0 到 6,那是因为我不得不将时间向后移动 7 小时,直到第二天开始。我还不得不将日期向后移动,因为 Kindle Voyage 浏览器奇怪的时间偏移导致预测一直向后移动。它很草率,可以精简,但它确实有效。
CSS -
p {
white-space: nowrap;
font-size: 70px;
word-spacing: 91px;
transform: rotate(90deg);
}
jQuery/Javascript -
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
var d = new Date();
if(d.getHours() >= 0 && d.getHours() <= 6 ){
/* Greater than or equal to 5PM (5PM+7=midnight (0) and less than or
equal to 11PM+7=6AM (6) */
$(".amazonworkaround").show();
}
else {
$(".amazonworkaround").hide();
}
});
</script>
和 -
<script>
var d = new Date();
var weekday = new Array(7);
weekday[0] = "Now Sun Mon Tue Wed Thu Fri Sat";
weekday[1] = "Now Mon Tue Wed Thu Fri Sat Sun";
weekday[2] = "Now Tue Wed Thu Fri Sat Sun Mon";
weekday[3] = "Now Wed Thu Fri Sat Sun Mon Tue";
weekday[4] = "Now Thu Fri Sat Sun Mon Tue Wed";
weekday[5] = "Now Fri Sat Sun Mon Tue Wed Thu";
weekday[6] = "Now Sat Sun Mon Tue Wed Thu Fri";
var n = weekday[d.getDay()];
document.getElementById("dayfix").innerHTML = n;
</script>
最后——
<div class="amazonworkaround" style="position: absolute; top: 0px; left: 625px;
width: 85px; height: 1800px; background-color: white; padding-left: 0px;
z-index: 101;"><p id="dayfix"></p></div>
解决方案
你试过重启你的Kindle吗?我的都没有这个问题。
我尝试使用各种 SetEnv TZ 时区更改 .htaccess 文件中的时区,但它对 javascript 及时输出和 iframe 内的天气没有影响。
那是因为 JavaScript 时区完全是在客户端设置的。
我旋转了所有内容,因为由于某些原因,亚马逊现在也不允许您在 Voyage 上以横向模式查看浏览器
如果你能越狱你的kindle,我真的推荐WebLaunch,它可以让你显示一个没有URL栏的网页,并且还有一个横向模式(注意Kindle的浏览器不会喜欢这个,并且认为它仍然处于纵向模式,这将导致响应式网页出现问题,但可以使用以下 CSS 修复)
html, body {
margin: 0;
width: 934px;
height: 700px;
}
推荐阅读
- r - 如何使用 dplyr 获得此预期结果
- javascript - 使用 require() 从 node_modules 导入 css 文件
- angular - Jasmine Test Observable Angular 中的完整功能
- reactjs - 使用反应钩子的响应式侧边栏
- ios - 使用 Swift 将结构附加到数组(在 iOS 中失败,但在 Playgrounds 中失败)
- ios - 在不同的边上添加不同宽度的边框
- javascript - 将 JSON 数据从 JS 传递到 PHP
- c# - WebView2 CallDevToolsProtocolMethodAsync 问题与 Fetch.continueRequest
- sql-server - 镜像监控日志包含几个小时的间隔 - 为什么?
- android - Timer在第一次运行时不加速,但在下一个工作时刻定时器加速。我该如何解决?