Chrome浏览器扩展程序:如何激活某个页面的所有传出链接的页面操作?
答
- 谷歌浏览器API没有这样的API,但是你想要的功能可以使用标准的谷歌浏览器扩展API来实现。
- 您需要实现content script
- 你的内容脚本应该修改要处理和覆盖你的自定义JavaScript所有出站链接,这将做一些东西,打开点击链接页面的DOM。
要修改链接的href,你可以做这样的事情:
function processLink(element, newHref) {
var a = document.createElement("a");
a.href = newHref;
a.textContent = element.textContent;
a.title = element.title;
element.parentNode.replaceChild(a, element);
}
更新1.
相反newHref可以生成的类似
a.href = "javascript:processOutgoingLinkClick('" + element.href + "')"
功能processOutgoingLinkClick
sh应该包含点击的实际处理。
答
只是一个好奇心,为什么不使用Chrome Extensions Tab Events你可以听OnUpdated onCreated。当用户点击页面上的链接时,它会去onUpdated并触发一个事件。
所以你background.html内,你可以这样做:
chrome.tabs.onUpdated.addListener(function(tabId, info) {
if (info.status === 'loading')
console.log('Loading url ... ' + info.url)
});
同样的事情onCreated。然后在加载时,你可以决定如何处理你的pageAction。
+0
好吧,它不告诉我哪个标签负责创建它... – int3 2010-03-21 08:12:29
我想到了这样的事实。但是,链接将如何向新选项卡发出信号以激活页面操作? – int3 2010-03-20 17:15:24
函数'processOutgoingLinkClick'应该包含实际的处理函数'processOutgoingLinkClick()' and render a.href =“javascript:processOutgoingLinkClick('”+ element.href +“')” – uthark 2010-03-20 17:19:48
啊我现在明白了。但是,我能否告诉用户是否想要在同一页面,新标签页或新窗口中打开的标签?不过,这将是一个小问题。谢谢! – int3 2010-03-20 17:27:48