通过谷歌进行safari扩展imageSearch。
这是我的来源。
injected.js
document.addEventListener("contextmenu", handleContextMenu, false);
function handleContextMenu(event) {
safari.self.tab.setContextMenuEventUserInfo(event, event.target.nodeName);
}
global.html
<!DOCTYPE HTML>
<script type="text/javascript" src="jquery.js"></script>
<script>
safari.application.addEventListener("contextmenu", handleContextMenu, false);
function handleContextMenu(event) {
var query = event.userInfo;
if (query === "IMG") {
event.contextMenu.appendContextMenuItem("imageSearch", "Search Google with this image");
}
}
safari.application.addEventListener("command", performCommand, false);
function performCommand(event) {
if (event.command === "imageSearch") {
/*How I get image Url??? */
var imageUrl="";
/*
var url = "http://images.google.com/searchbyimage?image_url="+imageUrl;
var tab = safari.application.activeBrowserWindow.openTab("foreground");
tab.url = url;
*/
}
}
我的目标是......
如果鼠标右键单击上下文菜单中的“使用Google搜索此图像”。 (全部清除)
点击“使用此图片搜索Google”谷歌。 (???)
所以我想知道图片网址。
我该怎么办?
答案 0 :(得分:4)
你可以试试这个:
将整个节点存储到事件的userInfo:
中function handleContextMenu(event) {
safari.self.tab.setContextMenuEventUserInfo(event, event.target);
}
将一些全局javascript变量添加到您的global.html(例如var lastClickedImg),
更改handleContextMenu函数,将函数handleContextMenu中的event.userInfo存储到此变量中:
function handleContextMenu(event) {
var query = event.userInfo;
if (query.nodeName === "IMG") {
lastClickedImg = query;
event.contextMenu.appendContextMenuItem("imageSearch", "Search Google with this image");
}
}
在你的函数performCommand中,你可以轻松地从lastClickedImg获取图像的url:
lastClickedImg.src
答案 1 :(得分:0)
您可以通过在注入的脚本中放置contextmenu的事件侦听器来查找图像URL。
function contextMenuHandler(event)
{
var url = event.target.src;
safari.self.tab.setContextMenuEventUserInfo(event, url);
}
document.body.addEventListener("contextmenu", contextMenuHandler, false);
然后在命令事件
中恢复图像srcvar imageUrl = event.userInfo;
您还应该进行一些验证,以确保它是图像。