我需要一些帮助来理解某些事情。
到目前为止我所拥有的是扩展解析页面并在匹配时注入链接。 我想要的是打开我的扩展/tab.html并在那里用我从内容脚本获得的变量填充输入字段。到目前为止,我得到了这个工作。
我有background.js这个
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
chrome.tabs.create({url: chrome.extension.getURL('tab.html')}, function(tab) {
request_s = request.x+' '+request.y;
console.log(request_s);
});
});
有效。
我打开了标签页和请求,但无论我做什么,我似乎无法更改tab.html中输入字段的值 我尝试使用$('#id')。val(request_s),但因为看起来dom还没准备好,所以没有任何反应。
所以我试着添加背景
chrome.tabs.onUpdated.addListener(function(tabid, changeInfo, tab) {
if(changeInfo.status == "complete" && tab.url == chrome.extension.getURL('tab.html')) {
console.log($('body'));
}
});
和log body innerhtml仅包含tab.html的脚本。任何建议我应该怎样做才能在准备好时访问tab.html dom?
答案 0 :(得分:1)
您在内容脚本中运行的所有代码都没有(因此,从不在tab.html中)
您应该查看https://developer.chrome.com/extensions/content_scripts和chrome.tabs.executeScript
此外,您应该查看onMessage
文档和sendResponse
参数。如果您想在异步通话后sendResponse
(例如tabs.create
),则需要return true
。
答案 1 :(得分:0)
请参阅this answer我写的类似请求 - 打开扩展标签并将数据传递给它。
我们的想法是保存您想要传递的数据,然后在您准备好的标签页上提出请求。