Как сделать так, чтобы окно уведомлений исчезло - PullRequest
3 голосов
/ 08 декабря 2010

Когда я отвечаю на веб-событие, мне бы хотелось, чтобы ранее действовавшее (?) Окно уведомления исчезло. Есть ли способ KRL сказать ему, чтобы он ушел, или это должно быть сделано через JavaScript?

Если это нужно сделать с помощью javascript, приведите пример

1 Ответ

3 голосов
/ 08 декабря 2010

Новый Shiny Awesomer Ответ!

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

$K(".kGrowl-notification .close").trigger("click");

Просто сгенерируйте этот JavaScript, когда вы отвечаете веб-событием.

Пример приложения лучше:

ruleset a60x469 {
  meta {
    name "better-close-notify-example"
    description <<
      better-close-notify-example
    >>
    author "Mike Grace"
    logging on
  }

  rule put_notify_on_page {
    select when pageview ".*"
    {
      // put notify on page
      notify("Hello","I'm on your page") with sticky = true;

      // raise web event
      emit <|
        setTimeout(function() {
          app = KOBJ.get_application("a60x469");
          app.raise_event("clear_notify");
        }, 2000);
      |>;
    }
  }

  rule clear_notify {
    select when web clear_notify
    {
      emit <|
        $K(".kGrowl-notification .close").trigger("click")
      |>;
    }
  }
}

СТАРЫЙ КРЕПИ ОТВЕТ


Есть несколько способов сделать это.

  • emit JavaScript, чтобы скрыть или заменить уведомление
  • изменить стиль отображения: нет с set_element_attr
  • replace_inner action для удаления уведомления (зло)

Примеры:

set_element_attr

set_element_attr(".kGrowl", "style", "display:none");

испустить [удалить] (зло)

emit <|
  $K(".kGrowl").remove();
|>;

испускать [скрывать]

emit <|
  $K(".kGrowl").hide();
|>;

replace_html (зло)

replace_html(".kGrowl","");

Полный пример приложения:

ruleset a60x468 {
  meta {
    name "example-clear-notify"
    description <<
      example-clear-notify
    >>
    author "Mike Grace"
    logging on
  }

  rule put_notify_on_page {
    select when pageview ".*"
    pre {
      button =<<
        <button id="clear-notify">Click me to clear the notify</button>
      >>;
    }
    {
      notify("Hello","I'm on your page") with sticky = true;
      append("body", button);
      emit <|
        $K("#clear-notify").click(function() {
          app = KOBJ.get_application("a60x468");
          app.raise_event("clear_notify");
        });
      |>;
    }
  }

  rule clear_notify {
    select when web clear_notify
    {
      replace_inner(".kGrowl","");
    }
  }
}

Пример приложения bookmarklet: => http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-clear-notify-dev_bookmarklet.html

Пример приложения, запущенного на example.com:

alt text

нажата кнопка очистки:

alt text

...