Chrome扩展:推送在创建新标签之前收集的信息
Chrome Extension: pushing information gathered before a new tab is created?
所以我有一个popup.html,它加载一个脚本(popup.js)作为浏览器操作的头。然后,它会调用网站以获取必要的信息。
我使用XMLHTTPRequests获得了所有必要的信息,并将其保存到popup.js.中的变量中
现在我尝试创建一个新的选项卡,加载一个网页,然后使用我保存的信息填写表格。
chrome.tabs.create({ 'url': "https://site.html" });
这行在popup.js 中
这将我带到所需的网站很快,但似乎删除了我以前检索到的所有信息。它甚至不会提醒我想要的信息,即使我在制作选项卡之前要求它。我该如何创建一个具有特定url的选项卡,然后使用我之前在popup.js中收集的信息来填写一个表单,同时将其包含在popup.js中?我的逻辑有缺陷吗?非常感谢你的建议。
更新:我将对此进行编辑,使其更有意义。
这是我的popup.js
function do(){
var xhr = new XMLHttpRequest();
xhr.open("Get", Url);
xhr.send();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
var dogName = this.responseText;
alert(dogName)
}
do();
chrome.tabs.create({ 'url': "site.html" });
在site.html里面有一个表单。我本来要对那个表单做这个。
document.getElementById('form').getElementsByTagName('input')[0].value = dogName;
document.getElementById("btnOK").click()
但如果线
chrome.tabs.create({ 'url': "https://site.html" });
存在,它只会把我带到那个页面,而不会运行do()
来提醒任何事情。
通过删除创建行,扩展将提醒我所需的信息。
您需要使用事件页面而不是弹出窗口。事件页面是一个长时间运行的脚本,允许您按需检索数据。打开的选项卡还需要运行内容脚本。此内容脚本将向事件页面发送消息,以检索提取XHR数据,然后将数据应用于表单字段。内容脚本可以使用manifest.json文件注入,也可以直接在作为第二个参数传入的chrome.tabs.create函数上注入。
注意:下面的代码是文件和结构的一个很好的例子应该是。它还没有经过测试,应该用来获得解决方案的总体思路。
Manifest.json
"content_scripts": [{
"matches": ["*://eample.com/formpage.html"],
"js": ["content.js"],
"run_at": "document_idle"
}],
OR
popup.js
chrome.tabs.create({ 'url': "https://example.com/formpage.html" }, function(tab1) {
chrome.tabs.executeScript(tab1.id, {file: 'content.js', run_at});
});
content.js
chrome.runtime.sendMessage({data: "dogName"}, function(response) {
var dogName = response.data;
document.getElementById('form').getElementsByTagName('input')[0].value = dogName;
});
event.js
function getDogName(callback){
var xhr = new XMLHttpRequest();
xhr.open("Get", Url);
xhr.send();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
var = dogName = this.responseText;
callback({data: dogName});
}
});
}
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.data === "dogName") {
getDogName(sendResponse);
return true;
}
});
您可以在这里找到有关扩展通信的更多详细信息:消息传递。
- 访问布局信息是否也会导致浏览器重排
- 在<页眉>标签
- 使用带有哈希标签的链接处理类似Facebook的按钮信息(标题和图像)
- 将信息框作为HTML标签属性(AngularJS)添加到Google Maps Marker
- 如何使用 Cookie 将信息保存在输入标签中
- MPLD3:条形图的标签信息
- 如何将信息存储在 或 标签中以供以后发送
- 根据点击按钮上的给定信息创建一个标签
- 将标签的信息传递到php并在另一个页面中显示(也可以在另一页面中更新)
- Chartjs在标签中以不同的单位显示多个信息
- 如何在get事件上获取标记标签信息
- 如何获得
- 如何构建Firefox插件以始终显示当前选项卡的书签存储详细信息(例如标签)
- 从后端发送信息到谷歌标签管理器
- 将信息从ruby传递到js脚本标签
- 从mp3 id3v2标签中识别歌曲信息
- Chrome扩展:推送在创建新标签之前收集的信息
- 做CSS 3动画/HTML5<详细信息>标签在幕后使用JavaScript
- 当我点击标签我可以把信息发给另一个人吗?
- 如何在文本框的两侧编写错误信息,而不使用JQuery中的任何其他标签