login  Naam:   Wachtwoord: 
Registreer je!
 Forum

chrome extension injectie vraag (Opgelost)

Offline lolll - 28/01/2012 11:04
Avatar van lolllLid 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
Offline ibmos2warp - 29/01/2012 11:48
Avatar van ibmos2warp 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.
Bedankt door: lolll
Offline lolll - 30/01/2012 17:06 (laatste wijziging 30/01/2012 17:07)
Avatar van lolll Lid 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-2024 Sitemasters.be - Regels - Laadtijd: 0.183s