我一直在开发一个简单的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"
}
答案 0 :(得分:1)
我认为您的checkType
功能应该修复:
function checkType(info,tab) {
if (info.linkUrl === $('a[href^="mailto:"]')) {
getEmail(info, tab)
}
else {
sendEmail(info, tab);
}
};
答案 1 :(得分:0)
此行:onclick: checkType(),
尝试将checkType()
的返回值设置为onclick
事件的处理程序。立即调用checkType()
而不传递任何参数会导致“无法读取属性'linkUrl'未定义”错误。
注册处理程序的正确方法是:
...
onclick: checkType,
...