Content script on chrome error page - javascript

How can I run my extension content script on Google Chrome error page?
For example on the "This webpage is not available" error page? Here is my manifest.json config:
{
"manifest_version": 2,
"name": "injectbox",
"version": "1.1",
"background": {
"scripts": ["jquery-1.11.1.min.js", "bg.js" ]
},
"content_scripts": [
{
"js": [ "jquery-1.11.1.min.js" ],
"matches": [ "<all_urls>" ],
"match_about_blank": true,
"run_at": "document_end"
},
{
"js": [ "content.js" ],
"css":["styles.css"],
"matches": [ "<all_urls>" ],
"match_about_blank": true,
"run_at": "document_end"
}
],
"permissions": [
"tabs", "http://*/*", "https://*/*", "file://*/*", "ftp://*/*",
"webRequest",
"storage"
]
}

I don't think it's possible, most probably this is an internal chrome:// page, which are excluded from page matches.
An alternative solution would be to listen to error events in webRequest/webNavigation APIs and replace the error page with your own.

Related

Chrome extension wont load images

This is my mainfest.
{
"name": "CVAT FlowChart",
"version": "0.01",
"description": "Easier access to flow charts for QA",
"content_scripts": [
{
"matches": ["<all_urls>"],
"css": ["./style.css"],
"web_accessible_resources": [{
"resources": ["Images/singleimage.png"],
"matches": ["<all_urls>"]
}],
"js": [ "jquery.js", "contentScript.js", "string.js" ]
}
],
"background": {
"service_worker": "background.js"
},
"host_permissions": ["<all_urls>", "http://localhost/*"],
"manifest_version": 3
}
I know I am using the correct src in my js file, because I can get there by following the link that I am imputing. what is wrong with my mainifest. Is there another place that could be the source of my problem?
this is the error I am getting.
Put web_accessible_resources at the same level as content_scripts.
I think your manifest.json is a format error. It would be a bug not to be able to detect it.
manifest.json
{
"name": "CVAT FlowChart",
"version": "0.01",
"description": "Easier access to flow charts for QA",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"css": [
"./style.css"
],
"js": [
"jquery.js",
"contentScript.js",
"string.js"
]
}
],
"web_accessible_resources": [
{
"resources": [
"Images/singleimage.png"
],
"matches": [
"<all_urls>"
]
}
],
"background": {
"service_worker": "background.js"
},
"host_permissions": [
"<all_urls>",
"http://localhost/*"
],
"manifest_version": 3
}

Chrome extension won't work on HTTPS urls

The chrome extension I developed works on every domain besides HTTPS ones.
I've tried setting matches like this: "matches": ["http://*/*","https://*/*"].
But it still doesn't work.
This is my manifest.json:
{
"manifest_version": 2,
"name": "My App",
"version": "0.01",
"background": {
"persistent":true,
"page":"background.html"
},
"content_scripts": [{
"matches": ["http://*/*","https://*/*"],
"js": ["app.js"],
"js": ["jquery.min.js"]
}
],
"permissions": [
"tabs",
"http://*/*"
]
}
Well, this is awkward.
Just had to change permissions from:
"permissions": [
"tabs",
"http://*/*"
]
To:
"permissions": [
"tabs",
"http://*/*",
"https://*/*"
]

chrome.runtime.onMessage undefined in content script

manifest,json
{
"background": {
"scripts": ["jquery-3.2.1.min.js", "background.js"]
},
"content_scripts": [{
"all_frames": true,
"run_at": "document_start",
"matches": [
"http://*/*",
"https://*/*",
"file:///*"
],
"css": ["mystyles.css"],
"js": ["jquery-3.2.1.min.js", "myscript.js"]
}],
"permissions": [
"<all_urls>",
"contextMenus",
"storage",
"clipboardWrite",
"clipboardRead",
"activeTab",
"identity",
"webRequest",
"webRequestBlocking"
],
"web_accessible_resources": [
"*.png"
]}
content script
chrome.runtime.onMessage(function(message, sender, sendResponse){
console.log(message);});
chrome console
my chrome version : 58.0.3029.110 (64-bit)
why chrome.runtime.onMessage is undefined in content_script?
Please tell me how to solve this problem~:)
Whether there are other ways to achieve that background sendMessage to content script?
chrome.runtime.onMessage is not a function indeed, it's an Event object that provides addListener function method:
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
...
});

extension not loading on url change

My content.js is not running when I click on a link. The url changes (content.js runs when hitting F5). The content that gets updated is inside of a frame.
How do I trigger my content.js to run without press F5?
{
"name":"My name",
"description":"My description!",
"version":"1",
"manifest_version":2,
"browser_action": {
"default_icon": "icon.png"
},
"content_scripts": [
{
"matches": ["http://www.somePage.com/article*"],
"js": ["content.js"]
}]}
Could you try to set the "all_frames" to true in order that when a frame in a page is updated the content script will be injected again like in the following:
"content_scripts": [
{
"matches": [ "http://www.somePage.com/article*" ],
"all_frames": true,
"js": [ "content.js" ]
}

Get url of tab that called inject-script

There is a problem.
I want to get url of tab that called inject-script content.js:
My manifest.json:
{
"background_page": "background.html",
"content_scripts": [ {
"all_frames": true,
"matches": [ "http://*/*", "https://*/*" ],
"js": [ "content.js" ],
"run_at": "document_start"
} ],
"description": "Test...",
"name": "TestExt",
"permissions": [ "tabs", "http://*/*", "https://*/*" ],
"version": "0.1.0"
}
My content.js:
document.addEventListener("beforeload", function(event) {
console.log(document.location.href);
}, true);
Result for link http://ya.ru:
http://ya.ru/
http://kiks.yandex.ru/system/fc06.html
http://suggest.yandex.ru/jquery-1-4-2.crossframeajax.html
but i need to see this
http://ya.ru/
http://ya.ru/
http://ya.ru/
Try window.top.document.location.href.

Categories

Resources