首页 > 解决方案 > 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>

标签: javascripttimebrowserkindle

解决方案


你试过重启你的Kindle吗?我的都没有这个问题。

我尝试使用各种 SetEnv TZ 时区更改 .htaccess 文件中的时区,但它对 javascript 及时输出和 iframe 内的天气没有影响。

那是因为 JavaScript 时区完全是在客户端设置的。

我旋转了所有内容,因为由于某些原因,亚马逊现在也不允许您在 Voyage 上以横向模式查看浏览器

如果你能越狱你的kindle,我真的推荐WebLaunch,它可以让你显示一个没有URL栏的网页,并且还有一个横向模式(注意Kindle的浏览器不会喜欢这个,并且认为它仍然处于纵向模式,这将导致响应式网页出现问题,但可以使用以下 CSS 修复)

html, body {
    margin: 0;
    width: 934px;
    height: 700px;
}

推荐阅读