login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > JavaScript

chrome extension injectie vraag (Opgelost)

lolll – 28/01/2012 11:04
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):

  1. function injectScript(text){
  2. var script = document.createElement("script");
  3. var parent = document.documentElement;
  4.  
  5. script.text = text;
  6. script.setAttribute("id", "codeInjection");
  7. script.setAttribute("extension", "Chrome");
  8. parent.appendChild(script);
  9. parent.removeChild(script);
  10. }
  11.  
  12. // Komt rechtstreeks uit firebug contentScript.js



Lolll

2 antwoorden

Gesponsorde links
Daisycon - Verdien geld met uw website

ibmos2warp – 29/01/2012 11:48
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)
Ok, het is gelukt:

Popup:
  1. function makeRequest(act){
  2. chrome.tabs.getSelected(null, function(tab) {
  3. chrome.tabs.sendRequest(tab.id, {action: act, tabid: tab.id}, function(response) { });
  4. });
  5. }
  6.  
  7. </head>
  8. <input type="button" id="alert" value="Alert" onClick="makeRequest(this.id);" />
  9. <input type="button" id="addbutton" value="Add Button" onClick="makeRequest(this.id);" />
  10. </body>
  11. </html>



contentScript:
  1. function injectCode(text){
  2. var script = document.createElement("script");
  3. var parent = document.documentElement;
  4.  
  5. script.text = text;
  6. script.setAttribute("id", "codeInjection");
  7. script.setAttribute("extension", "Chrome");
  8. parent.appendChild(script);
  9. parent.removeChild(script);
  10. }
  11.  
  12. var codes = Array();
  13. codes["alert"] = "alert(test);";// Test staat al in pagina
  14. codes["addbutton"] = "var a = document.createElement('button');document.documentElement.appendChild(a);";
  15.  
  16. chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  17. switch(request.action){
  18. case "alert":
  19. injectCode(codes["alert"]);
  20. break;
  21. case "addvisibilities":
  22. injectCode(codes["addbutton"]);
  23. default:
  24. break;
  25. }
  26. });



Lolll

Gesponsorde links

Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten:

© 2002-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.049s