内容脚本和背景交流
Content Script and Background Communication
我希望为特定网站创建一个扩展,以提供他们目前没有的额外格式和共享选项。
我在正确沟通方面遇到了问题,似乎没有一个明确的例子。
清单:
{
"name": "Test",
"description": "Testing.",
"version": "1.0",
"background_page": "background.html",
"permissions": [
"tabs", "http://www.sitedomain.com/*"
],
"content_scripts": [
{
"matches": ["*://*.sitedomain.com/*"],
"js": ["jquery.min.js", "test.js"],
"css": ["test.css"]
}
]
}
内容脚本:
$(document).ready(function () {
alert('test js fired');
$("#ColumnContainer div.item").each(function () {
$(this).css("background-color", "skyBlue");
var itemId = $(this).children("a.itemImage").attr("href");
$(this).children(".details").append("<a href='"javscript:void(false);'" onclick='"gotoItem('" + itemId + "');'">Goto Item</a>");
});
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
alert('listener request');
alert(request);
});
后台HTML的JavaScript:
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
if (changeInfo.status == "complete") {
if (tab.url.indexOf("sitedomain.com") > -1) {
chrome.tabs.executeScript(null, {file: "test.js"});
}
}
});
chrome.tabs.sendRequest(tabId, request, responseCallback);
function responseCallback() {
alert('response callback');
}
function gotoItem(itemId) {
alert('goto Item - ' + itemId);
}
当加载sitedomain.com
时,上面的代码确实在客户端页面上附加了链接并更改了样式。然而,我没有幸运地启动gotoItem
方法,Chrome开发工具显示未定义。我尝试过各种组合,但还不能完全掌握听众和请求。
我真的很想看到一个干净的示例,它只是展示如何从每个站点调用一个方法。
我发现您的代码有两个问题。1) gotoItem
函数是在后台页面中定义的,而CCD_。2) content_scripts
和它们被注入的页面上的javascript不能交互,所以你的onclick
不能成为链接html的一部分。
修复#1就像将gotoItem
函数移动到content_script
中一样简单。
要修复#2,应该使用以下方法。
$("#ColumnContainer div.item").each(function(){
$(this).css("background-color","skyBlue");
var itemId = $(this).children("a.itemImage").attr("href");
var $link = $('<a href="javscript:void(false);">Goto Item</a>');
$link.click(function() {
gotoItem(itemId);
}
$(this).children(".details").append($link);
});
您可能需要修改itemId
的传递方式。
相关文章:
- Google Apps 脚本:尝试根据单元格的背景颜色发送电子邮件
- 脚本随机更改背景渐变色[但从特定范围]
- 是否可以使用chrome.tabs.sendmessage从内容脚本向背景页发送消息
- 简单的 Java 脚本背景图像不起作用
- 编写替换背景图像的用户脚本
- 将背景图像更改为另一个由ajax调用脚本动态创建的图像
- 谷歌浏览器扩展程序内容脚本和背景
- Chrome 扩展 API:Chrome.tabs.captureVisibleTab 在背景页面上到内容脚本
- 设置使用背景更改脚本的背景
- 在java脚本的帮助下,在日历中显示背景日期应该是红色的,我也从oracle数据库中获取数据
- java脚本不会更改背景图像
- 如何从我的Chrome扩展中获取变量'的背景脚本
- chrome扩展中的可变范围,尤其是在背景页和内容脚本之间
- 内容脚本和背景交流
- 选项启用了内容脚本Chrome扩展,没有背景页
- 网站不会显示在IE一旦我激活脚本.除了背景,一切都不见了
- 脚本定义加载时的背景,宽度/高度可变
- 内容脚本和背景页面之间的消息传递在chrome扩展是不工作,因为它应该是
- 背景脚本代码和内容脚本代码的区别
- 如何有背景脚本和类似于默认弹出的东西