2012-12-29 2 views
0

가능한 중복 : 나는 탭의 URL (작품을 수집하는 간단한 하나를 만들어 확장에 여기 저기에서 코드를 수집하여
Chrome extension delay condition타이머

임 매우 초보자 특정 웹 사이트에 대한) 및 내 데이터베이스에 저장하기 위해 내 서버로 보내는 아약스 사용하여. 내가 시도하려는 것은 타이머를 추가하여 이전 클릭이 5 초 이내에 발생하지 않으면 브라우저 버튼이 비활성화되거나 아무 것도하지 않는 것입니다.

매니페스트 :

{ 
"name": "The name", 
"icons": { "16": "Big.png", 
     "48": "Big.png", 
     "128": "Big.png" }, 
"version": "1.0", 
"manifest_version": 2, 
"description": "and the description", 
"browser_action": { 
"default_icon": "icon.png", 
"default_popup": "popup.html" 
}, 
"permissions": ["tabs", "<all_urls>"] 
} 

popup.js : 이하

확장자의 구조

chrome.tabs.getSelected(null,function(tab) { 
var Mp=tab.url 
if(Mp=='http://www.examplesite.com') 
{ 
var xhr=new XMLHttpRequest(); 
var Params; 
xhr.open("POST", "http://myserver.com/post_from_extension.asp", true); 
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
Params='Url=' + tab.url; 
xhr.onreadystatechange=function() 
    { 
     if(xhr.readyState==4) 
     { 
     message.innerHTML=xhr.responseText; 
     } 
    } 
xhr.send(Params); 
} 
else 
{ 
message.innerHTML='<span style="font-family: Segoe UI, Tahoma;color: #f00">This is not a valid url</span>'; 
} 
}); 

popup.html

,174,
<!DOCTYPE html> 
<html style=''> 
<head> 
<script src='popup.js'></script> 
</head> 
<body style="width:400px;"> 
<div id='message'><span style="font-family: Segoe UI, Tahoma;color: #00f">Sending request</span></div> 
</body> 
</html> 

Ajax가 아니라면 내 데이터베이스에 URL을 게시하는 다른 방법이 있습니까?

나를 읽어 주셔서 감사합니다.

+0

동일한 질문을 다시 게시하지 마십시오. (조금 다르게 사용한다고해도) [이전 글] (http://stackoverflow.com/questions/14023983/chrome-extension-delay-condition)을 수정하여 유용하게 사용하십시오. 세부. –

+0

Omg, 누군가 제가 정말로 몇 줄의 코드 라인을 추가하고 준비하도록 도울 수 있습니까? 나는 지불 할 것이다! –

답변

1

확장 프로그램에 배경 페이지 (스크립트)를 추가해야한다고 생각합니다. 이는 일종의 응용 프로그램 상태입니다. 매니페스트에 다음을 추가합니다.

"background": { 
    "scripts": ["background.js"] 
    }, 

페이지에서 브라우저 동작이 각 탭에 대해 수행되었을 때 마지막으로 저장하는 배열을 정의 할 수 있습니다.

var timers = []; 

당신은, 당신의 popup.js에서 (getSelected 콜백에서) 그런 일을이 배열의 요소를 업데이트 할 수 있습니다 : 당신이 브라우저 조치를 해제하고, 해제에의 성상을 변경하는 방법

chrome.extension.getBackgroundPage().timers[tabId] = new Date(); 
chrome.browserAction.disable(tabId); 
chrome.browserAction.setIcon({path: "icon-disabled.png", tabId: tabId}); 

주/일을 회색으로 .

등록 된 시간이 5 초를 초과 한 후에 배경 페이지에서 단추를 다시 활성화해야합니다.

var currentTime = new Date(); 
if(currentTime - chrome.extension.getBackgroundPage().timers[tabId] > 5000) 
{ 
    chrome.browserAction.enable(tabId); 
    chrome.browserAction.setIcon({path: "icon-enabled.png", tabId: tabId}); 
} 

당신은 timers 어레이의 모든 요소들을 setInterval 콜백로부터주기 내에 코드를 실행할 수있다.

+0

chrome.browserAction.setIcon ({path : "icon-disabled.png"}) 만 만들 수있었습니다. 작동하지만, 다른 모든 일을 isnt :( –