在Google Chrome浏览器中,如果我选择一段文字并右键单击它,则可以选择:
“在Google上搜索[文本]”
我发现这非常有用,但我也想添加自己的选项。
例如,我想添加使用所选文本搜索amazon.co.uk或使用所选文本(例如地址或邮政编码)直接进入Google地图的功能,等等。
我可以使用PhraseExpress添加此功能,但宁愿能够直接从Chrome进行操作-是否可以?
在Google Chrome浏览器中,如果我选择一段文字并右键单击它,则可以选择:
“在Google上搜索[文本]”
我发现这非常有用,但我也想添加自己的选项。
例如,我想添加使用所选文本搜索amazon.co.uk或使用所选文本(例如地址或邮政编码)直接进入Google地图的功能,等等。
我可以使用PhraseExpress添加此功能,但宁愿能够直接从Chrome进行操作-是否可以?
Answers:
这是一个扩展,该扩展使用Context Menus API将选项添加到右键菜单中以选择文本,并允许您定义自己的自定义搜索。
尝试http://maps.google.com/maps?q=TESTSEARCH
使用Google Maps和http://www.amazon.co.uk/s/?url=search-alias%3Daps&field-keywords=TESTSEARCH
Amazon.co.uk。
到目前为止,开发人员和Beta渠道中都提供了Context Menus API。您可以使用它编写自己的扩展程序,这些扩展程序会在右键菜单中添加选项。请注意,这仅适用于Google Chrome版本6及更高版本。
以下是官方扩展程序库中的示例:
我还根据该代码编写了自己的三个:
右键单击链接,单击“ 另存为...”,在计算机上查找文件,然后将其拖到Google Chrome窗口中,则风险自负。
在此处阅读有关API的信息:
要编写自己的文件,您需要一个manifest.json文件,该文件应如下所示:
{
"background_page": "background.html",
"description": "Add a context menu item to search for selected text at Google Maps.",
"icons": {
"16": "icon16.png",
"48": "icon48.png"
},
"minimum_chrome_version": "6",
"name": "Google Maps Right Click",
"permissions": [ "contextMenus", "tabs" ],
"version": "1.0"
}
您还需要一个background.html文件,该文件应如下所示:
<script>
function searchgooglemaps(info)
{
var searchstring = info.selectionText;
chrome.tabs.create({url: "http://maps.google.com/maps?q=" + searchstring})
}
chrome.contextMenus.create({title: "Search Google Maps", contexts:["selection"], onclick: searchgooglemaps});
</script>
最后,上下文菜单至少应具有16×16像素的图标,扩展管理页面应至少具有48×48像素的图标。您还可以指定一个128×128像素的图标(在安装过程中显示),如果要向您的扩展程序提交扩展名,则可以指定一个32×32像素的图标。您的所有图标都需要在manifest.json中列出。确保文件类型和名称匹配。
将图标,background.html和manifest.json放到一个文件夹中,然后转到扩展管理页面chrome://extensions
,在“ 开发人员”模式下查看(我认为您需要运行Beta或更高版本才能显示该信息),单击“ 包扩展名”,在“ 扩展名”根目录旁边,单击“ 浏览”,找到并选择您创建的文件夹,单击“ 确定”,然后将生成的.crx文件拖到Google Chrome窗口中。
manifest.json
现在是版本2,并且很多东西已经更改。
有一个上下文搜索扩展程序可以满足您的需求,但它不会在右键单击菜单中添加任何内容。相反,在页面上选择了一部分文本后,它将显示一个带有蓝色三角形的小按钮,然后单击它会弹出菜单。
我一直在享受一个名为“ 自定义右键单击菜单”的扩展程序,该扩展程序 允许您创建完全可配置的右键单击菜单项,甚至可以在其他浏览器中运行(Opera:安装Chrome扩展程序,Firefox:Chrome Store Foxified)。
将代码更改为
var query;
var url = "https://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=%s";
if (crmAPI.getSelection()) {
query = crmAPI.getSelection();
} else {
query = window.prompt('Please enter a search query.');
}
if (query) {
window.open(url.replace(/%s/g,query), '_blank');
}
创建脚本类型的另一个菜单项,将其命名为“ Google Map”或类似名称,并以相同的方式进行编码:
var query;
var url = "https://www.google.com/maps/search/%s";
if (crmAPI.getSelection()) {
query = crmAPI.getSelection();
} else {
query = window.prompt('Please enter a search query.');
}
if (query) {
window.open(url.replace(/%s/g,query), '_blank');
}
有一个扩展名为“上下文菜单搜索”。它允许您向其添加URL,然后在选择文本并单击其中一个URL时,会将文本传递给您单击的URL。
例如,YouTube的搜索URL为:
TESTSEARCH是您要搜索的文本。在扩展名中,添加此行,并在按下时自动将TESTSEARCH替换为所选文本。您当然可以为每个URL添加一个标签。
这是扩展的链接。
https://chrome.google.com/webstore/detail/ocpcmghnefmdhljkoiapafejjohldoga
嗨,既然主要问题已经回答,我想做点贡献。
这是一个经过简单修改的脚本,类似于使用Google进行反向图像搜索,但是将imglink.jpg重定向到Jeffrey的Exif Viewer以分析图像的EXIF。
感谢gdejohn。
轻松,创建这2个文件(我使用记事本),添加一些图标16x16、48x48和128x128(或删除行),然后进入chrome:// extensions / tick开发人员模式,添加包含文件的文件夹。
文件名:manifest.json
{
"manifest_version": 2,
"background" : { "scripts": ["background.js"] },
"description": "Agrega un menu contextual para ver el EXIF de imagenes. Jeffrey's Exif Viewer",
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"minimum_chrome_version": "6",
"name": "Regex Exif Viewer Right Click",
"permissions": [ "contextMenus", "tabs", "http://*/*",
"https://*/*" ],
"version": "1.0"
}
档名:background.js
/**
* Returns a handler which will open a new tab when activated.
*/
function getClickHandler() {
return function(info, tab) {
// The srcUrl property is only available for image elements.
var url = "http://regex.info/exif.cgi?imgurl=" + info.srcUrl;
// Create a new tabto the info page.
chrome.tabs.create({ url: url, });
};
};
/**
* Create a context menu which will only show up for images.
*/
chrome.contextMenus.create({
"title" : "Get image info via Jeffrey's Exif Viewer",
"type" : "normal",
"contexts" : ["image"],
"onclick" : getClickHandler()
});