【发布时间】:2016-06-15 17:39:31
【问题描述】:
我的 chrome 扩展的当前版本从当前选项卡中提取一组字符串,打开一个具有特定 url 的新选项卡,然后继续插入字符串并使用 jQuery 提交表单。我遇到的问题是,如果我之后打开一个单独的选项卡并使用表单转到 URL,它会继续再次插入数据并提交表单。它将持续执行此操作,因此我永远无法在使用 chrome 扩展程序自动化之外使用该网站。
这是 background.js 中发送字符串的函数。
chrome.browserAction.onClicked.addListener(function (tab) { //Fired when User Clicks ICON
if(zip){
zipCode = zip;
zip = null;
}else{
zipCode = prompt('Zip code');
}
if(/^\d{5}(-\d{4})?$/.test(zipCode)){
var newURL = "https://www.medicare.gov/find-a-plan/questions/home.aspx?search";
chrome.tabs.create({ url: newURL });
chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
id = "2136760320";
if (changeInfo.status == 'complete') {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabId, {zip: zipCode, pass: pwd, drugID: id}, function(response) {});
});
}
});
}
});
这是与 URL 匹配并与 jquery 一起插入的内容脚本。仅当 chrome 扩展程序是打开页面的扩展程序时,我才需要它运行。
var pwd = "";
var id = "";
var onMessageHandler = function(message, sender, sendResponse){
pwd = message.pass;
id = message.drugID;
$("#saveWorkID").val(id);
var date = pwd.split("/");
var month = date[0];
if (month.length < 2) month = "0" + month;
var day = date[1];
var year = date[2];
$("#month").val(month);
$("#day").val(day);
$("#year").val(year);
$("#lnkFind span").trigger("click");
}
chrome.runtime.onMessage.addListener(onMessageHandler);
上述页面之前的页面还有另外两个内容脚本正在运行,但不确定它们是否有必要。
这是manigest.json
{
"manifest_version": 2,
"name": "PDP Lookup",
"description": "Lookup the PDP druglist of a current user",
"version": "1.0",
"icons": {"48": "icon.png",
"128": "icon128.png" },
"browser_action":
{
"default_icon": "icon.png"
},
"background":{
"scripts": [
"jquery.js",
"background.js"
]
},
"content_scripts": [
{
"matches": [
"https://www.medicare.gov/find-a-plan/questions/home.aspx?search"
],
"js": [
"jquery.js",
"stage1.js"
]
},
{
"matches": [
"https://www.medicare.gov/find-a-plan/questions/enter-your-information.aspx"
],
"js": [
"jquery.js",
"stage2.js"
]
},
{
"matches": [
"https://XXX.XXX.XXX/XX*"
],
"js": [
"jquery.js",
"search.js"
]
},
{
"matches": [
"https://plancompare.medicare.gov/pfdn/PlanFinder/DrugSearch"
],
"js": [
"jquery.js",
"stage3.js"
]
}
],
"permissions": [
"tabs",
"https://*/*",
"http://*/*"
]
}
任何有关如何防止内容脚本尝试读取已发送消息的帮助将不胜感激。
【问题讨论】:
-
这个问题好像有你的答案stackoverflow.com/questions/20046803/…
标签: javascript jquery google-chrome-extension