双击/选择单词时在chrome扩展中运行一个函数

时间:2016-03-10 01:26:37

标签: javascript google-chrome google-chrome-extension

每当我双击一个单词/选择它时,我都会尝试发出通知。在网上找到了几个例子,但我仍然无法让我的例子工作:

清单:

{
  "name": "hh",
  "description": "hh!",
  "manifest_version": 2,
  "version": "0.0.0.1",
  "content_scripts": [
    {
      "matches": [ "http://*/*", "https://*/*" ],
      "js": [ "background.js" ],
      "all_frames": true,
      "run_at": "document_end"
    }
  ],
  "permissions": ["storage", "notifications"],
  "icons": { "128": "neoprice.png" }

}

background.js

var listener = function(evt) {
    var selection = window.getSelection();
    if (selection.rangeCount > 0) {
        displayPrice();
        var range = selection.getRangeAt(0);
        var text = range.cloneContents().textContent;
        console.log(text);
    }

};
document.addEventListener('dblclick', listener);

function displayPrice(){
  chrome.notifications.create(getNotificationId(), {
    title: "message.data.name",
    iconUrl: 'hh.png',
    type: 'basic',
    message: "message.data.prompt"
  }, function() {});
}

// Returns a new notification ID used in the notification.
function getNotificationId() {
  var id = Math.floor(Math.random() * 9007199254740992) + 1;
  return id.toString();
}

我之前添加了以下内容,但我看到有人没有使用它,所以我删除了它

  "app": {
    "background": {
      "scripts": ["background.js", "assets/jquery.min.js"]
  }
 },

我想要实现的目标:每当他们选择一个单词进入任何页面时,都会触发该功能。稍后,我希望将其用于特定页面。 :)

尝试:How to keep the eventlistener real time for chrome extensions?

Chrome extension double click on a word

https://github.com/max99x/inline-search-chrome-ext

两者都没有真正起作用,因为我也想要它们。 :(

1 个答案:

答案 0 :(得分:1)

解决方案

您似乎对background pagecontent script感到困惑。您的zsh实际上是background.js,但其名称为"背景"。虽然chrome.notifications api只能在content script中调用,但尝试评论background page功能会使您的代码正常工作。

下一步

请查看上面的教程,w displayPrice事件触发器,使用Message Passing与后台页面进行通信,并在后台页面中调用dblclick api。

还有什么

以下代码用于chrome apps而不是chrome extension

chrome.notications