[英]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.