현재 크롬 확장 버전은 현재 탭에서 문자열 집합을 추출하고 특정 URL로 새 탭을 열고 계속해서 문자열을 삽입하고 jQuery를 사용하여 양식을 제출합니다. 내가 가진 문제는 나중에 별도의 탭을 열고 양식이있는 URL로 이동하면 데이터를 다시 삽입하고 양식을 제출하는 것입니다. 이 작업은 계속해서 수행되므로 크롬 확장을 사용하여 웹 사이트를 자동화하지 않고 사용할 수 있습니다.sendMessage에 크롬 확장을 한 번만 가져 오는 방법은 무엇입니까?
문자열을 보내는 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);
위의 페이지 이전 페이지에는 2 개의 다른 콘텐츠 스크립트가 실행 중이지만 필요한 경우 확실하지 않습니다.
이
가 보낸 메시지를 읽으려고에서 콘텐츠 스크립트를 방지하는 방법에 어떤 도움을 주시면 감사하겠습니다{
"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://*/*"
]
}
manigest.json에게 있습니다.
이 질문에 대한 답변이있는 것 같습니다. http://stackoverflow.com/questions/20046803/remove-listener-when-given-url-is-visited-after-using-chrome-tabs-onupdated-addl –