全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法

日期插件 bootstrap-datetimepicker 在火狐下出现一条报错信息:TypeError: (intermediate value).toString(…).split(…)[1] is undefined

这条错误必然出现,难道没有在 Firefox 下进行测试。

在 Firefox 下查看项目 demo (http://www.malot.fr/bootstrap-datetimepicker/demo.php)可以正常运行,但这个 demo.php 使用的是 2013-3-2 的 datetimepicker,github 项目(https://github.com/smalot/bootstrap-datetimepicker/releases)已经发布到 2017-3-3,这个最新的版本(以及最近的一些版本)在 Firefox 下测试不完善,计算 defaultTimeZone 时虽然没有出错,但给出的结果也不正确。

源代码如下,运行环境 Firefox 51.0.1(32位)

this.defaultTimeZone = (new Date).toString().split('(')[1].slice(0, -1);
this.timezone = options.timezone || this.defaultTimeZone;
// 2.4.4 改进版本
this.timezone = options.timezone || timeZoneAbbreviation();
function timeZoneAbbreviation() {
  var abbreviation, date, formattedStr, i, len, matchedStrings, ref, str;
  date = (new Date()).toString();
  formattedStr = ((ref = date.split('(')[1]) != null ? ref.slice(0, -1) : 0) || date.split(' ');
  if (formattedStr instanceof Array) {
    matchedStrings = [];
    for (var i = 0, len = formattedStr.length; i < len; i++) {
      str = formattedStr[i];
      if ((abbreviation = (ref = str.match(/\b[A-Z]+\b/)) !== null) ? ref[0] : 0) {
        matchedStrings.push(abbreviation);
      }
    }
    formattedStr = matchedStrings.pop();
  }
  return formattedStr;
}

出错原因是 Firefox 下 Date.prototype.toString 返回结果不包含 TimeZone 的文字描述。

2.4.4 改进版本使用的 timeZoneAbbreviation 函数在 Firefox 下返回  true

对 timeZoneAbbreviation 使用的三元表达式依次简化

((abbreviation = (ref = str.match(/\b[A-Z]+\b/)) !== null) ? ref[0] : 0)
(abbreviation = (ref = str.match(/\b[A-Z]+\b/)) !== null)
(abbreviation = (xxx) !== null)
(abbreviation = xxx !== null)
abbreviation 必然是布尔值,如果将 matchedStrings.push(abbreviation) 换成 matchedStrings.push(str) 更接近预期值。

推荐使用文末的方案。

解决方案

将 date toString 最后一个空格之后的字符串作为 TimeZone。

// this.defaultTimeZone = (new Date).toString().split('(')[1].slice(0, -1);
this.defaultTimeZone = (new Date + '').split(' ').slice(-1)[0].replace(/\(|\)/g, '');
this.timezone = options.timezone || this.defaultTimeZone;

以上所述是小编给大家介绍的 bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# datetimepicker  # 日期插件  # 火狐  # bootstrap datetimepicker日期插件超详细使用方法介绍  # bootstrap datetimepicker日期插件使用方法  # jQuery DateTimePicker 日期和时间插件示例  # Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例  # bootstrap-datetimepicker实现只显示到日期的方法  # C#日期控件datetimepicker保存空值的三种方法  # 报错  # 小编  # 的是  # 也不  # 运行环境  # 在此  # 推荐使用  # 这条  # 给大家  # 解决办法  # 所述  # 给我留言  # 源代码  # 正常运行  # 不完善  # 感谢大家  # 不包含  # 进行测试  # 更接近 


相关文章: 早安海报制作网站推荐大全,企业早安海报怎么每天更换?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何在新浪SAE免费搭建个人博客?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  MySQL查询结果复制到新表的方法(更新、插入)  如何在阿里云服务器自主搭建网站?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  C#如何在一个XML文件中查找并替换文本内容  定制建站如何定义?其核心优势是什么?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  深入理解Android中的xmlns:tools属性  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  高端建站三要素:定制模板、企业官网与响应式设计优化  制作营销网站公司,淘特是干什么用的?  ,石家庄四十八中学官网?  建站主机选择指南:服务器配置与SEO优化实战技巧  专业公司网站制作公司,用什么语言做企业网站比较好?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  浅谈Javascript中的Label语句  已有域名建站全流程解析:网站搭建步骤与建站工具选择  教学网站制作软件,学习*后期制作的网站有哪些?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  Python路径拼接规范_跨平台处理说明【指导】  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站之星如何实现五合一智能建站与营销推广?  非常酷的网站设计制作软件,酷培ai教育官方网站?  网站制作价目表怎么做,珍爱网婚介费用多少?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  建站DNS解析失败?如何正确配置域名服务器?  历史网站制作软件,华为如何找回被删除的网站?  如何在IIS中新建站点并解决端口绑定冲突?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何快速生成ASP一键建站模板并优化安全性?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  高防服务器租用首荐平台,企业级优惠套餐快速部署  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  宁波免费建站如何选择可靠模板与平台?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何通过.red域名打造高辨识度品牌网站?  网站制作壁纸教程视频,电脑壁纸网站?  建站org新手必看:2024最新搭建流程与模板选择技巧  如何使用Golang安装API文档生成工具_快速生成接口文档  兔展官网 在线制作,怎样制作微信请帖?  如何制作一个表白网站视频,关于勇敢表白的小标题? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。