2011-10-18 4 views
4

私はFullCalendarライブラリを使用して、Googleカレンダーからカレンダーの予定を読み込んでいます。 イベントはカレンダーに追加された後、クリック可能です。イベントをクリックすると、Googleカレンダーのページに自動的にリダイレクトされ、その特定のイベントを表示したり、アクセス権を獲得している場合は直接編集したりできます。 これはイベント管理には非常に便利ですが、カレンダーでイベントをクリックするたびにサイト訪問者が外部ページにリダイレクトされる理由を想像できません。Googleカレンダーフィードを使用しているときにFullCalendarでイベントリンクを無効にするにはどうすればよいですか?

FullCalendarの「クリックして開く」を無効にする方法はありますか?空のJavaScript関数呼び出しを開くリンクを上書きすることもオプションになります。

答えて

4

fullcalendarオプションで独自のイベントレンダラを試みる価値があるかもしれません:

{ eventRender:function (event, element)} 

はこれを行うには、あなたがレンダリングコードを自分のすべてを記述する必要があります - 必要に応じて元の実装を開始し、微調整することができます。
Googleカレンダーの実装は試していませんが、必要に応じてカスタムjsonでhrefをオンまたはオフにしています。


gcal.jsファイルをハッキングして、イベントオブジェクトのhrefプロパティを設定しないようにすることができます。
または
レンダリング前にイベントデータをインターセプトし、hrefプロパティを削除します。

4

編集ファイルが

events.push({ 
    id: entry['gCal$uid']['value'], 
    title: entry['title']['$t'], 
    //url: url, 
    start: start, 
    end: end, 
    allDay: allDay, 
    location: entry['gd$where'][0]['valueString'], 
    description: entry['content']['$t'] 

削除行gcal.js:url: url,

0

を私はsites/all/modules/fullcalendarfullcalendar.fullcalendar.jsファイルを編集し、同様に17にライン12をコメントアウト:

var options = { 
     eventClick: function (calEvent, jsEvent, view) { 
     /* if (settings.sameWindow) { 
      window.open(calEvent.url, '_self'); 
     } 
     else { 
      window.open(calEvent.url); 
     } */ 
     return false; 
     }, 
+0

-1にclassNameを追加した場合。 Fullcalendarには、eventClick()などの関数をオーバーライドするためのさまざまなオプションが用意されています。 – a20

11

FullCalendarウェブサイトのドキュメントは、コールバック関数 'eventClick'を参照しています。

http://arshaw.com/fullcalendar/docs/mouse/eventClick/

イベントオブジェクトにurlプロパティが設定されている場合、falseを返すと、ブラウザはイベントURLにアクセスできなくなります。だから、あなたはintialiseときFullCalendarは

$('#calendar').fullCalendar({ 
    eventClick: function(event) { 
     if (event.url) { 
      return false; 
     } 
    } 
}); 
1

古い質問...の線に沿って何かをeventClickコールバック関数を追加しますが、ここで私はそれを「固定」方法です。

eventRender: function(event, element) { 
    element.on('click', function (e) { 
     e.preventDefault(); 
    }); 
} 

これが最も可能性が高いあなたがそれをクリックすると、イベントを編集するフォームを開くように、他のクリック動作を実装するからあなたを防ぐことができます。

元のライブラリを製作中は非常に悪いの提案ですので、あなたが働くかもしれない。この

eventRender: function(event, element) { 
    element.on('click', function (e) { 
     if (element.closest('.your-gcalendar-class-name').length > 0) { 
      e.preventDefault(); 
     } 
    }); 
} 

ようにそれをしたいかもしれないGoogleカレンダーのイベント...

+0

良いキャッチですが、関数の代わりに=>を使うべきです。ソリューションに感謝します。 –

+0

ええ、2015年に私がその答えを投稿したときに戻って、ES6の矢印機能は広くサポートされていませんでした。 –