【问题标题】:function(event) within an Opera context-menu extensionOpera 上下文菜单扩展中的函数(事件)
【发布时间】:2016-08-31 18:30:00
【问题描述】:

我正在尝试为 Opera 编写一个简单的扩展。当您右键单击图像时,它会添加“在 Google 上搜索图像”,就像在 Chrome 中一样。类似的扩展已经存在,但这是为了学习。

我第一次尝试使用onClick,这不是正确的方法。我使用this answer 重写了我的 bg.js 文件。现在看起来像这样:

chrome.runtime.onInstalled.addListener(function() {
    chrome.contextMenus.create({
        title: "Search Google for image",
        id: "gsearch",
        contexts: ["image"]
    });
});

chrome.contextMenus.onClicked.addListener(function(info, tab) {
    if (info.menuItemId === "gsearch") {
        function(event) {
            chrome.tabs.create({
                url: "https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(event.srcUrl);
            });
        }
    }
});

当我加载扩展时,Opera 抱怨第 11 行 function(event) { 导致错误消息 Unexpected token (。很明显,我在这里遗漏了一些关于语法的内容,希望您能提供专业知识。

【问题讨论】:

  • if 块中的函数声明在 ES5 中是无效的,而您的甚至没有名称(使其无效两倍)。该功能到底应该做什么?放下它。
  • 谢谢。如果没有该功能,我如何将event 传递给encodeURIComponent
  • event 应该是什么?不是和info一样吗?
  • 确实如此。我不明白。

标签: javascript syntax opera


【解决方案1】:

不能在if 块内声明函数。此外,info 可以传递给encodeURIComponent。以下代码有效:

chrome.runtime.onInstalled.addListener(function() {
    chrome.contextMenus.create({
        title: "Search Google for image",
        id: "gsearch",
        contexts: ["image"]
    });
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
    if (info.menuItemId === "gsearch") {
        chrome.tabs.create({
            url: "https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(info.srcUrl)
        });
    }
});

谢谢伯吉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 2023-03-19
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多