|
Categorieën >
JavaScript
chrome extension injectie vraag (Opgelost)
|
|
|
offline
|
Lid
|
Beste SiMa's,
ik heb de documentatie van een chrome extension eens doorlezen, en ik wou zelf eens iets maken, waarbij ik javascript in een pagina injecteer. Dit ging allemaal goed, zolang ik het bij lokale variabelen enzo hield. Maar nu wou ik graag js injecteren die gebruik maakt van variabelen die in de pagina zelf al staan, alleen gaat dit niet volgens hun uitleg omdat jou geïnjecteerde code in een 'geïsoleerde wereld' zit. Maar, nu had ik de extensie firebug lite geïnstalleerd, waarmee je ook js kan injecteren, en met deze extensie kan ik wel gebruikmaken van variabelen die in de pagina zelf staan. Ik heb hun code eens zitten bekijken, maar ik geraak er maar niet wijs uit.
Mijn vraag is dus of ik dat kan namaken en ervoor kan zorgen dat ik in mijn extensie ook js kan injecteren die gebruik kan maken van variabelen die in de pagina zelf staan. Tot nu toe ben ik alleen tot dit gekomen (werkt niet):
function injectScript(text){
var script = document.createElement("script");
var parent = document.documentElement;
script.text = text;
script.setAttribute("id", "codeInjection");
script.setAttribute("extension", "Chrome");
parent.appendChild(script);
parent.removeChild(script);
}
// Komt rechtstreeks uit firebug contentScript.js
function injectScript(text){ var script = document.createElement("script"); var parent = document.documentElement; script.text = text; script.setAttribute("id", "codeInjection"); script.setAttribute("extension", "Chrome"); parent.appendChild(script); parent.removeChild(script); } // Komt rechtstreeks uit firebug contentScript.js
Lolll |
2 antwoorden
|
|
|
offline
|
PHP interesse
|
In principe is dat wel de manier om te communiceren. Deze manier wordt ook met ajax / jsonp gebruikt. Zie ook dit en dit.
|
lolll – 30/01/2012 17:06 (Laatst gewijzigd op 30/01/2012 17:07)
|
|
offline
|
Lid
|
Ok, het is gelukt:
Popup:
<html>
<head>
<script>
function makeRequest(act){
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {action: act, tabid: tab.id}, function(response) { });
});
}
</script>
</head>
<body>
<input type="button" id="alert" value="Alert" onClick="makeRequest(this.id);" />
<input type="button" id="addbutton" value="Add Button" onClick="makeRequest(this.id);" />
</body>
</html>
function makeRequest(act){ chrome.tabs.getSelected(null, function(tab) { chrome.tabs.sendRequest(tab.id, {action: act, tabid: tab.id}, function(response) { }); }); } <input type="button" id="alert" value="Alert" onClick="makeRequest(this.id);" /> <input type="button" id="addbutton" value="Add Button" onClick="makeRequest(this.id);" />
contentScript:
function injectCode(text){
var script = document.createElement("script");
var parent = document.documentElement;
script.text = text;
script.setAttribute("id", "codeInjection");
script.setAttribute("extension", "Chrome");
parent.appendChild(script);
parent.removeChild(script);
}
var codes = Array();
codes["alert"] = "alert(test);";// Test staat al in pagina
codes["addbutton"] = "var a = document.createElement('button');document.documentElement.appendChild(a);";
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
switch(request.action){
case "alert":
injectCode(codes["alert"]);
break;
case "addvisibilities":
injectCode(codes["addbutton"]);
default:
break;
}
});
function injectCode(text){ var script = document.createElement("script"); var parent = document.documentElement; script.text = text; script.setAttribute("id", "codeInjection"); script.setAttribute("extension", "Chrome"); parent.appendChild(script); parent.removeChild(script); } var codes = Array(); codes["alert"] = "alert(test);";// Test staat al in pagina codes["addbutton"] = "var a = document.createElement('button');document.documentElement.appendChild(a);"; chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { switch(request.action){ case "alert": injectCode(codes["alert"]); break; case "addvisibilities": injectCode(codes["addbutton"]); default: break; } });
Lolll
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|