在双击/选择单词时在 chrome 扩展程序中运行函数
Running a function in chrome extension on double click/select of a word
每当我双击一个单词/选择它时,我都会尝试触发通知。在网上找到了几个例子,但我仍然无法让我的例子工作:
清单:
{
"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" }
}
背景.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"]
}
},
我想要实现的目标:每当他们进入任何页面选择一个单词时,它都会触发该函数。稍后,我希望将其用于特定页面。:)
已尝试: 如何保持 chrome 扩展程序的事件侦听器的实时性?
Chrome扩展程序双击某个字词
https://github.com/max99x/inline-search-chrome-ext
两者都不能像我想要的那样工作。 :(
解决方案
您似乎对背景页面和内容脚本感到困惑。事实上,你的background.js
是一个content script
,尽管它的名字是"背景"。虽然chrome.notifications api只能在background page
中调用,但尝试注释displayPrice
函数将使你的代码正常工作。
下一步
看看上面的教程,dblclick
事件触发器,使用消息传递与后台页面通信,并在后台页面调用chrome.notications
api。
并且
以下代码用于 chrome 应用,而不是 chrome 扩展程序。
"app": {
"background": {
"scripts": ["background.js", "assets/jquery.min.js"]
}
},
相关文章:
- 从Spring应用程序运行PhantomJS以获取网页缩略图
- stopPropagation是否还会阻止同一元素上的其他处理程序运行
- 由于“未解析的类型”错误,无法使用Web驱动程序运行Javascript
- AngularJS/Protactor:使用角种子基本应用程序运行量角器时出错
- jQuery的事件处理程序运行良好,但应该't,因为它's不在ready()函数中
- 从web应用程序运行.exe文件
- 设置为“run_at”document_start“的 Chrome 扩展程序运行速度太快
- 如何在流打开时保持节点应用程序运行
- 从 HTML 应用程序与 Flex 应用程序运行时出现 ActiveXObject 错误
- 使用 JavaScript 驱动程序运行 RSpec/Capybara 时的数据库超时
- 链接到boostrap的Javascript代码会阻止onclick事件处理程序运行
- 模式弹出窗口无法正常工作,它多次调用函数 - 单击事件处理程序运行多次
- Intellij IDEA 12.1.7 JavaScript 文件在应用程序运行时不更新
- 推迟在应用程序运行angularjs上创建控制器/服务
- JQuery悬停事件处理程序运行次数过多
- 将node-webkit作为node.js应用程序运行
- Javascript-Can'我不能让我的程序运行——循环永远不会结束
- 当我在网站上运行时,我如何构建我的应用程序以使用localStorage,当我作为chrome应用程序运行时,如何构建c
- 是否有可能使它清楚,如果应用程序运行在网站的根下或在js应用程序下
- 我应该如何从Java应用程序运行NodeJS