2

我正在编写一个扩展程序,该扩展程序对页面上的图像的右键单击做出反应。我想知道图像的尺寸以进行进一步处理。

开箱即用,我的回调获取对选项卡和“信息”对象(OnClickData)的引用,它只公开最少的信息。

有没有人遇到过这种情况?我都在考虑

  • 基于 srcUrl 再次加载图像(如果 URL 是动态的,则可能无法重现)并询问它
  • 尝试遍历选项卡的 DOM 以查找图像并询问它(不确定这是否需要内容脚本来跨越从扩展程序到网页的边界)
4

1 回答 1

2

图像属性上下文菜单扩展的作用是将用户脚本与上下文菜单 API 结合使用。

用户脚本被注入所有页面,监听上下文菜单事件,并通过以下方式将有关图像的信息发送到扩展chrome.extension.sendRequest

document.addEventListener("contextmenu", function (e) {
    var elem = e.srcElement;
    if (elem instanceof HTMLImageElement) {
        var img = {
            src: elem.src,
            alt: elem.alt,
            height: elem.height,
            width: elem.width
        }
        chrome.extension.sendRequest(img);
    }
}, true);

后台页面用于chrome.extension.onRequest.addListener接收此数据,并将其存储在全局变量中。上下文菜单 API 点击回调从这个全局变量中读取数据。

这假设chrome.extension.sendRequest调用总是在点击回调之前处理,但情况可能并非总是如此。您可能希望通过回调检查数据是否已到达,如果没有,请稍后再试(使用setTimeout)。

于 2012-05-29T14:57:42.993 回答