getAttribute除了getElementsByTagName不工作在chrome扩展js脚本
getAttribute in addition to getElementsByTagName not working in a chrome extension js script
我拼命想做一个chrome扩展,这应该保存链接标题到数据库。为此,我创建了以下javascript文件:
mysu.js
var linkTitle;
window.addEventListener('load', function() {
var urls= document.querySelectorAll('a.url');
for(i=0,len=urls.length;i<len; i++) {
urls[i].addEventListener('click', function() {
chrome.tabs.create({url: this.href});
}, false);
}
var a=document.getElementsByTagName('a');
for (i=0,len=a.length;i<len;i++) {
a[i].addEventListener('contextmenu', function() {
var tmpThis = this;
var tmpTitle = tmpThis.getAttribute('title').trim();
alert(tmpTitle);
var tmpText = tmpThis.textContent.trim();
var tmpImg = tmpThis.childNodes('img').firstChild;
if ((tmpTitle != null) && (tmpTitle.length > 0)) {
linkTitle = tmpTitle;
} else if ((tmpText != null) && (tmpText.length > 0)) {
linkTitle = tmpText;
} else if (tmpImg != null) {
linkTitle = tmpImg.getAttribute("alt");
}
});
};
}, false);
chrome.contextMenus.create({'title': 'Add to mySU bookmarks', 'contexts': ['link', 'page'], 'onclick': mySUBookmark});
function mySUBookmark() {
alert(linkTitle);
}
当然,我首先尝试用alert()进行调试。然而,无论我做什么,我得到一个未定义。我试图从另一个扩展复制这种行为,我知道这样做。我错过了什么?
问候,
k .
PS:下面是我的清单文件,如果它有帮助:
manifest.json
{
"name" : "mySU",
"description" : "mySU",
"browser_action": {
"default_icon": "images/mysu.png",
"default_popup": "html/mysu.html",
"default_title": "Select page to navigate to..."
},
"permissions": [
"tabs",
"contextMenus",
"storage",
"http://mysu.sabanciuniv.edu/*",
"http://*.sabanciuniv.edu/*"
],
"background": {
"scripts": ["js/mysu.js"]
},
"icons": {
"128": "images/mysu.png"
},
"version": "1.0",
"minimum_chrome_version": "9",
"manifest_version": 2
}
我假设你想在触发上下文菜单项的网页上下文中执行代码的第一部分。
这不会发生:它在一个不可见的、空的背景页上下文中执行。
阅读关于上下文脚本的文档来了解如何这样做。你可以把它放到一个js文件中,然后注入到触发上下文菜单的选项卡中。
或者,查看上下文菜单的onclick
处理程序提供的info对象:
function mySUBookmark(info, tab) {
console.log(info);
}
这可能不需要额外的代码就能满足您的需求。不过,也许不是。
相关文章:
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 从选项页面更新chrome扩展清单权限
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- Chrome扩展:遍历不同的页面并收集数据
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 可以从Chrome扩展修改窗口对象吗
- 从popup.js|Chrome扩展访问DOM
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 在Chrome扩展内部输出Google API调用
- 检查是否存在使用chrome扩展的javascript库
- 从Chrome扩展访问Google Cloud SQL数据库
- Chrome扩展,Chrome.tabs.query的结果未定义
- 为tweet构建chrome扩展
- 在chrome扩展中使用AJAX获取目录中的文件数