开发者问题收集

Chrome 扩展程序中的 JavaScript 返回“无法读取未定义的属性‘XXX’

2013-12-31
1843

我一直在开发一个简单的 Chrome 扩展程序,上下文菜单显示正常,但无法打开弹出窗口。我试图让它根据选择区分操作。

更新

经过几个小时的折腾,我想我已经接近目标了,但现在我收到“无法读取未定义的属性‘linkUrl’”的提示,我不知道它来自哪里。

function getEmail(info,tab) {
    chrome.windows.create({
        url: "https://mail.google.com/mail/?ui=2&view=cm&fs=1&tf=1&shva=1&to="+info.linkUrl.substr(7), 
        width:640,
        height:700,
        focused:true,
        type:"popup",
    })
}

function sendEmail(info,tab) {
    chrome.windows.create({
        url: "https://mail.google.com/mail/?ui=2&view=cm&fs=1&tf=1&shva=1&to=" +info.selectionText,
        width:640,
        height:700,
        focused:true,
        type:"popup",
    })
}

chrome.contextMenus.create({
    title: "Send a New Email",
    contexts:["link", "selection"],
    onclick: checkType(),
});

function checkType(info,tab) {
    if (typeof info.linkUrl === $('a[href^="mailto:"]')) {
        console.log("This should print first");
        // getEmail();
    }
    else { 
        console.log("This should print");
        // sendEmail();
    }
}

manifest.json

{
   "background": {
      "scripts": [ "background.js" ]
   },

   "description": "Creates a context menu option which copies the selected address into a new Gmail compose window.",

   "manifest_version": 2,
   "name": "New Gmail Window",
   "permissions": [ "tabs", "contextMenus" ],
   "version": "0.1"
}
2个回答

我认为您的 checkType 函数应该修复:

function checkType(info,tab) {
    if (info.linkUrl === $('a[href^="mailto:"]')) {
        getEmail(info, tab)
    }
    else { 
        sendEmail(info, tab);
    }
};
CD..
2013-12-31

此行: onclick:checktype(), 尝试设置 返回值 checktype() 作为 onclick 事件。立即调用 checktype() 而无需传递任何参数会导致“无法读取属性'linkurl'nortectined'错误。

注册处理程序的正确方法将是: 253460365

gkalpak
2014-01-02