Повторение “Событий” (Календарь)

RoBorg корректен, но я хотел добавить примечание стороны.

В IE7/IE8, когда Microsoft добавила Вкладки к их браузеру, они повредили одну вещь, которая вызовет опустошение с Вашим JS, если Вы не будете осторожны.

Воображают этот макет страницы:

MainPage.html
  IframedPage1.html   (named "foo")
  IframedPage2.html   (named "bar")
    IframedPage3.html (named "baz")

Теперь в кадре "baz" Вы нажимаете на ссылку (никакая цель, загрузки в кадре "baz"), это хорошо работает.

, Если страница, которая загружается, позволяет, называют его special.html, JS использования, чтобы проверить, имеет ли "это" родительский кадр, названный "панелью", это возвратит (ожидаемый) true.

Теперь позволяет, говорят, что страница special.html, когда она загружается, проверяет родительский кадр (для существования и его имени, и если это - "панель", она перезагружает себя в кадре панели. например,

if(window.parent && window.parent.name == 'bar'){
  window.parent.location = self.location;
}

Пока неплохо. Теперь прибывает ошибка.

Позволяет, говорят вместо того, чтобы нажать на исходную ссылку как нормальный, и загрузить страницу special.html в кадре "baz", Вы щелкнули средней кнопкой по нему или приняли решение открыть его на новой вкладке.

, Когда та новая вкладка загружается ( без родительских кадров вообще! ) IE введет бесконечный цикл загрузки страницы! , потому что IE "копирует по" структуре кадра в JavaScript, таким образом, что новая вкладка ДЕЙСТВИТЕЛЬНО имеет родителя, и что родитель ИМЕЕТ имя "панель".

хорошие новости, то, что проверка:

if(self == top){
  //this returns true!
}

, в котором новая вкладка действительно возвращает true, и таким образом можно протестировать на это нечетное условие.

6
задан Ryan Gates 30 December 2013 в 20:31
поделиться

2 ответа

А, повторяющиеся события - одна из проблем моей жизни, наряду с часовыми поясами. Ведение календаря сложно .

Вы можете смоделировать это в терминах RFC2445 . Однако это может дать вам гораздо больше гибкости - и сложности, чем вы действительно хотите.

Несколько вещей, которые следует учитывать:

  • Нужна ли вам более тонкая детализация, чем определенное время в указанные даты? Если вам нужно повторить и в зависимости от времени, это становится сложнее.
  • Рассмотрим случаи угловой даты, такие как «30-е число каждого месяца», и что это означает для високосных лет.
  • Рассмотрим случаи временной границы, такие как «1.30 утра. каждый день »- иногда в 1.30 может случиться дважды, а иногда может и не случиться, из-за перехода на летнее время
  • Нужно ли вам делиться расписанием с людьми из других часовых поясов? Это снова усложняет жизнь
  • . Вам нужно представлять, сколько раз происходит событие, или конечную дату, когда оно произойдет? («Считать» или «до» в основном.) Вам может не понадобиться ни то, ни другое, либо вам может понадобиться один или оба.

Я понимаю, что это список вещей, над которыми нужно подумать, а не окончательный ответ, но я думаю, что это важно чтобы определить параметры вашей проблемы, прежде чем пытаться найти решение.

9
ответ дан 10 December 2019 в 00:42
поделиться

Я подумал, что повторяющиеся события должны генерироваться при сохранении исходного события с новой моделью. Это означает, что я не выполняю случайную обработку каждый раз при загрузке календаря (и это означает, что я также могу, например, отменить одно «Показать» в серии), но также означает, что я должен ограничить это определенным периодом времени, поэтому если бы кто-то ушел, скажем, через год в будущее, он бы не увидел эти повторяющиеся шоу. Но в какой-то момент их придется (потенциально) заново сгенерировать.

0
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: