kevinorriss/clienttimezone

使用javascript获取客户端时区与UTC的分钟数偏移

1.2.0 2016-06-10 13:08 UTC

This package is not auto-updated.

Last update: 2024-09-24 22:02:22 UTC


README

使用javascript获取客户端时区与UTC的分钟数差异。

工作原理

如果客户端时区未存储在会话中,javascript将触发一个POST ajax请求,发送客户端当前时间与UTC时间的分钟数偏移。然后,这个偏移将被存储在会话中,并且用户的浏览器会重新加载当前页面。javascript将只做一次,或者直到一个新的会话开始。

安装

  1. 将ClientTimezone添加到composer.json文件中的require

"kevinorriss\clienttimezone": "1.2.*"

  1. 将ClientTimezoneServiceProvider添加到app.php文件中

KevinOrriss\ClientTimezone\ClientTimezoneServiceProvider::class,

  1. 将ClientTimezone别名添加到app.php文件中

'ClientTimezone' => KevinOrriss\ClientTimezone\ClientTimezone::class,

  1. 运行composer update

使用方法

为了使用此包,您需要设置您的应用程序,以便Ajax调用发送CSRF令牌。

  1. 将以下meta标签添加到您的main blade布局文件中

<meta name="csrf-token" content="{{ csrf_token() }}" />

  1. 使用jquery添加javascript ajax设置代码,您可以在public/js/main.js中创建脚本并将其添加到您的main布局中
$(document).ready(function()
{
  $.ajaxSetup(
  {
    headers:
    {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });
});
  1. 在您的main布局中添加以下行,在jQuery脚本标签之后

@include('clienttimezone::javascript')

示例

Carbon

ClientTimezone最好与Carbon一起使用,以显示用户的当前时间。

$carbon = Carbon::now();
$carbon->addMinutes(ClientTimezone::getOffset());

跳过

有时您可能不希望javascript检查客户端时区。一个例子是当客户端通过跟随URL验证他们的电子邮件地址来创建您应用程序的新会话时,此页显示一个闪存消息,但将在JavaScript重新加载页面之前短暂显示。页面重新加载后,闪存消息将已过期。

为了防止javascript检查客户端时区并在需要时重新加载页面,只需在返回视图之前在控制器中添加此行即可。

ClientTimezone::skip();

覆盖

您可以通过在.env文件中添加相同名称的值来覆盖ClientTimezone的任何常量值,例如

CLIENT_TIMEZONE_SESSION=myexample
CLIENT_TIMEZONE_POST=newurl
CLIENT_TIMEZONE_SKIP=skipkey

作者

还可以查看参与此项目的贡献者列表。

许可协议

此项目受MIT许可协议的许可 - 有关详细信息,请参阅LICENSE文件