簡體   English   中英

如何在ClojureScript中創建可以集中在窗口上的js / Notification?

[英]How can I create a js/Notification in ClojureScript that can focus on the window?

我想創建一個帶有文本的(chrome)通知,我可以單擊該通知以將其轉到發出該通知的頁面。 這是我得到的最接近的東西,請注意,這非常不習慣。 我不得不使用js* (js star),我找不到文檔,但是它只執行一串javascript。

(js* "  var notification = new Notification('Here is the title', {
    icon: 'http://path.to/my/icon.png',
    body: 'Some body text',
  });

  notification.onclick = function () {
    console.log('hi there');
    this.close();
    window.focus();
  };")

注意, log有效, close有效,但是window.focus()無效。 如果您將此代碼的js部分復制並粘貼到瀏覽器的控制台中,則可以正常工作。

我認為正確答案應該更像以下內容,但是onclick對於任何功能都根本不起作用:

(new js/Notification "Here is the title"
             (clj->js {:body "(click to vist page)"
                       :onclick #(.focus js/window)}))

編輯 :如果您鍵入以下內容(例如,在Figwheel中),則js/window絕對具有focus參數。 很明顯,但是我剛剛檢查了一下,但是用(.focus js/window)調用時它不起作用:

(.keys js/Object js/window)

這甚至無法集中精力:

(js* "window.focus()")

而且我似乎找不到附加到js/Notification鍵來使onclick正常工作:

(.keys js/Object (new js/Notification "hi" (clj->js {:body "body text"})))

我一定做錯了什么,但是呢?

這是原始JavaScript代碼的“直接端口”:

(let [title "Here is the title"
      js-opts (js-obj "icon" "http://path.to/my/icon.png"
                      "body" "Some body text")
      js-notification (js/Notification. title js-opts)]
  (aset js-notification "onclick"
    (fn []
      (this-as js-this
        (.log js/console "hi there")
        (.close js-this)
        (.focus js/window)))))

注意,我在JavaScript引用前面加上了js- ,這是在ClojureScript中處理JavaScript互操作時的常見約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM