Javascript 在 chrome 中工作,而不是 firefox 或 ie

Posted

技术标签:

【中文标题】Javascript 在 chrome 中工作,而不是 firefox 或 ie【英文标题】:Javascript working in chrome, not firefox or ie 【发布时间】:2016-02-05 18:02:41 【问题描述】:

我对 javascript/jquery 非常陌生。编写了以下脚本,它适用于 Chrome 46.0.2490.80 m,但不适用于 Firefox 42.0 或 IE 11。 %<value_name>% 格式的值是来自我正在使用的内容管理系统的预定义值。

如果布尔值"%asset_metadata_register_button%" 设置为0,或者在日期变量"eventDate" 发生后一天,脚本应该隐藏一个按钮。否则显示按钮。

脚本还应该在eventDate 发生后更改按钮的文本和href 值。

HTML

<p id="show"><a id="change" class="button" href="firstURl">Register</a></p>

Javascript

$(document).ready(function() 
    // Boolean value from Show Registration Button metadata field
    var number = "%asset_metadata_register_button%";

    // variable for start date of event
    var eventDate = new Date('%asset_attribute_start_date%');

    // variable for date at present time
    var now = new Date();

    // variable for one day after present time
    var oneDay = new Date('%asset_attribute_start_date%');

    oneDay.setDate(oneDay.getDate() + 1);

    // Hide button if Show Registration Button metadata field is set to no, or for one day after Webinar took place. Otherwise show Button.
    if (number == 1) 
        if (eventDate < now && now < oneDay) 
            document.getElementById("show").innerhtml = "(Webinar will be uploaded shortly)";
         else 
            $('#show').show();
        
     else 
        $('#show').hide();
    

    // changes button text and link after webinar commences
    if (eventDate > now) 
        document.getElementById("change").innerHTML = "View Webinar";
        document.getElementById("change").href = "secondURL";
    
);

【问题讨论】:

%asset_attribute_start_date% 的日期是什么格式——我猜这是只有 chrome 能理解的日期字符串格式 您好,感谢您的回复...它的 ISO8601 格式,像这样打印到屏幕 2015-11-04 01:30:00 如果输入字符串是2015-11-04 01:30:00,那么firefox将无法解析它,你最终会得到一个Invalid Date 当你说它“不工作”时,它是做什么的?您在页面或控制台中看到了哪些错误? 你能提供一个jsfiddle的例子吗? 【参考方案1】:

正如 +Jaromanda X 所说,您在使用某些浏览器时会遇到错误。

您的代码如下所示:

// variable for start date of event
var eventDate = new Date('%asset_attribute_start_date%');

// variable for date at present time
var now = new Date();

//variable for one day after present time
var oneDay = new Date('%asset_attribute_start_date%');

oneDay.setDate(oneDay.getDate() + 1);

你可以用这个替换它:

var dateTime = '%asset_attribute_start_date%';
var date = dateTime.substring(0, dateTime.indexOf(" "));
var time = dateTime.substring(dateTime.indexOf(" ")+1);

date = date.substring(date.indexOf("-")+1) + "-" + date.substring(0, date.indexOf("-"));

var eventDate = new Date(date + ' ' + time);
var oneDay = new Date();
oneDay.setDate(eventDate.getDate() + 1);

var now = new Date();

它的作用是将日期格式从“2015-11-04”替换为“11-04-2015”。

【讨论】:

以上是关于Javascript 在 chrome 中工作,而不是 firefox 或 ie的主要内容,如果未能解决你的问题,请参考以下文章

Django,Javascript:通过 javascript innerHtml 注入 DOM 的表单在提交时崩溃 google chrome 选项卡。在 IE 中工作

(Django) AJAX 请求的 CSRF 验证在 Chrome 而不是 Firefox 中工作

Jquery 表单提交不能在 chrome 中工作,但在 Firefox 中工作

如何让 Mailchimp 弹出窗口在 Chrome 中工作

在 Chrome 中工作的 SVG 上 CSS 动画的 transform-origin,而不是 FF

用于在Firefox中工作的网站的Facebook Messenger,而不是Chrome