【问题标题】:Full Calendar eventDrop firing eventClick in Firefox 15Firefox 15 中的完整日历 eventDrop 触发 eventClick
【发布时间】:2013-02-19 01:13:21
【问题描述】:

我不知道要对以下代码进行哪些更改才能使其在 Firefox 15 中运行:

    eventDrop: function (event, dayDelta) {
        updateCalendarEvent(event.id, dayDelta);
        //Firefox 15 fires eventClick for no good reason???
    },
    eventClick: function (event) {
        alert('event click');
        if (event.url) {
            alert(event.url);
            vUrl = '../Activities/' + event.url;
            openActivityAddEditDialog(vUrl, 'Edit Activity');
            return false;
        }
    },

我做了相当多的研究,这绝对是一个 BUG。代码在 Chrome、Safari、Firefox 14 甚至 IE 中运行良好 - 但在 Firefox 15 中无法正常运行。已经快 2 个月了,还没有修复的迹象。

有人在此处发布了有关解决方法的黑客攻击: http://code.google.com/p/fullcalendar/issues/detail?id=1523

另一个类似的未回答的 Full Calendar Firefox SO 问题: Full Calendar event hyperlinks automatically fire in Firefox

【问题讨论】:

  • 你说它以前工作得很好。您使用的是不同版本的完整日历插件吗?
  • fullcalendar 插件没有改变。我已将其更新为最新的以及 jquery 和 jquery ui - 但错误行为没有变化。

标签: javascript firefox fullcalendar


【解决方案1】:

你还会有一些这样的事件数据:

events: [

{id: '76',title: 'Hot Shave',data: 'Some data',start: new Date(2012,9, 17, 13 , 55),end: new     Date(2012,9,17, 13 , 115),allDay: false, url: '<someurl>'}
],

将显示“url:”的事件更改为“workingurl:”并将您的 eventclick 代码更新为:

eventClick: function (event) {
        alert('event click');
        if (event.workingurl) {
            alert(event.workingurl);
            vUrl = '../Activities/' + event.workingurl;
            openActivityAddEditDialog(vUrl, 'Edit Activity');
            return false;
         }
    },

这应该会阻止 FF 基于 url: 属性触发点击,然后不再存在。

【讨论】:

  • workingurl vs url 不能解决问题。仔细观察,似乎 eventClick 实际上并没有触发(因为没有发生警报)页面重定向到 /MyCalendar/ActivityAddEdit.aspx - 它如何构造这个 url 有点神秘../ = MyCalendar 和该页面是 ActivityAddEdit.aspx - 但总是有通过其他代码传递的查询字符串。这真是一个分球器:-\
【解决方案2】:

当您在事件中包含“url”属性时,JSON FullCalendar 会将事件呈现为&lt;a&gt; 链接而不是&lt;div&gt;

看起来 Firefox 将 &lt;a&gt; 的拖放视为单击并跟随 URL。这会导致 AJAX 请求被中断并返回status=0,如此处所述: https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=Using_XMLHttpRequest#XMLHttpRequests_being_stopped

在我的情况下(Firefox 18),这会导致“您处于离线状态!请检查您的网络”警告消息。

将“url”属性重命名为“targetUrl”会导致事件呈现为&lt;div&gt;,从而解决了问题。然后,您需要修改 eventClick 处理程序以相应地使用新属性。

【讨论】:

  • 谢谢!这为我解决了问题!使用 FF 18.0.2、fullCalendar 1.5.4 和 jQuery 1.8.1。
  • 正确 - 这是 url 问题 - 通过重命名为 targetUrl(或除 url 之外的任何内容)修复 - 必须在 Json 数据和 eventClick 中更改:在完整日历初始化上
【解决方案3】:

即使在 fullcalendar.js 中为所有函数设置断点后 - 错误仍然发生,并且在 eventDrop 完成后没有完整的日历函数被触发 - 但重定向仍然发生。

仅在 Firefox 15 中!

也更改为早期版本的 jquery - 但没有区别。

我最近看到了一些关于 Firefox 15 和丢弃事件错误的帖子,但没有什么特别适用于此。

有人遇到这个问题吗?

如果没有 - 有没有办法只为 Firefox 用户禁用拖放功能?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多