Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to insert HTML with a chrome extension?

I have a context menu option and when it is selected I want insert some HTML. I have tried doing this

var div=document.createElement("div"); document.body.appendChild(div); div.innerText='test123'; 

But it's not working for me.

Note I am trying to avoid using jQuery.

like image 848
Ziamor Avatar asked Sep 30 '13 20:09

Ziamor


People also ask

How do I add HTML code to Chrome?

Right-click an element in the inspector, and select "Edit as HTML". You can then add whatever HTML you want inside of it.

Do Chrome extensions use HTML?

Chrome extensions are built with HTML, JavaScript, and CSS scripts and are essentially small websites uploaded to the Chrome store. The only difference between a Chrome extension and a regular website is that extensions contain a manifest file, which gives them a specific function to execute.

Can Chrome extensions edit HTML?

Page Edit is an extension that let you make changes to any HTML webpage. To work with this add-on, simply open the toolbar popup UI and then click on the big toggle button at the left side.


1 Answers

Here you can research how to create an extension and download the sample manifest.json.

Content Scripts can be used to run js/css matching certain urls.

manifest.json

{   "name": "Append Test Text",   "description": "Add test123 to body",   "version": "1.0",   "permissions": [     "activeTab"   ],   "content_scripts": [     {       "matches": ["http://*/*"],       "js": ["content-script.js"]     }   ],   "browser_action": {     "default_title": "Append Test Text"   },   "manifest_version": 2 } 

content-script.js

var div=document.createElement("div");  document.body.appendChild(div);  div.innerText="test123"; 

The above will execute the content-script.js for all urls matching http://*/* where * is a wildcard. so basically all http pages.

Content scripts have many properties which can be found in the link above.

Programmatic injection can be used when js/css shouldn't be injected into every page that matches the pattern.

Below shows how to execute the js onclick of the extension icon:-

manifest.json

{   "name": "Append Test Text",   "description": "Add test123 to body",   "version": "1.0",   "permissions": [     "activeTab"   ],   "background": {     "scripts": ["background.js"],     "persistent": false   },   "browser_action": {     "default_title": "Append Test Text"   },   "manifest_version": 1 } 

background.js

chrome.browserAction.onClicked.addListener(function(tab) {   chrome.tabs.executeScript({     code: 'var div=document.createElement("div"); document.body.appendChild(div); div.innerText="test123";'   }); }); 

This uses the executeScript method, which also has an option to call a separate file like so:-

background.js

chrome.browserAction.onClicked.addListener(function(tab) {   chrome.tabs.executeScript({     file: "insert.js"   }); }); 

insert.js

var div=document.createElement("div");  document.body.appendChild(div);  div.innerText="test123"; 
like image 138
BenG Avatar answered Oct 14 '22 17:10

BenG