I can't compress a new extension for chrome - google-chrome

When I try to compress an extension I'm creating for Google Chrome, I get the message below (in portuguese, can't find it in English):
Erro de extensão de pacote (Pack extension error)
Falha ao emitir a chave privada. (Failed to output private key)
I can "Load unpacked" and run it perfectly..
Code bellow:
popup.html:
<!doctype html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
<script type='text/javascript' src='./jquery.min.js'></script>
<script type='text/javascript' src='./scripts.js'></script>
</html>
scripts.js:
$(document).ready(function () {
if ($('.LoginScreen').length > 0) {
$("#username").val("usuarioteste");
$("#password").val("senhateste");
$("form[name='loginForm'] .DwtButton").click();
}
});
manifest.json:
{
"name": "Auto Complete Zimbra",
"version": "1.1",
"description": "Extensão para autocompletar e logar automaticamente no Zimbra!",
"manifest_version": 2,
"browser_action": {
"default_icon": "favicon.ico",
"default_popup": "popup.html"
},
"permissions": [
"*://*.meusite.com.br/*"
],
"content_scripts": [
{
"matches": [
"*://*.meusite.com.br/*"
],
"js": [
"jquery.min.js",
"scripts.js"
]
}
]
}

Chrome tries to create a private key file adjacent to the extension directory. In your case that would be C:\extensao.pem (and the extension itself wants to go to C:\extensao.crx). The default permissions on Windows allow creating directories but not files at the root of the C drive.
Move your extension folder somewhere else.

Related

doesn't execute appended JavaScript tag in current page chrome extension

I create one chrome extension that I want append one javascript file in source code current page. I write this code but doesn't work.
Indeed I can append one tag like javascript in source code current page but doesn't work and I take this ERRORS:
Denying load of chrome-extension://lmainnigamjlkokflgjdkjdjbphifefb/remove2.js?_=1372832784584. Resources must be listed in the web_accessible_resources manifest key in order to be loaded by pages outside the extension.
GET chrome-extension://invalid/
Failed to load resource
this is my codes:
manifest.json
{
"manifest_version" : 2,
"name" : "Get URL",
"description" : "This is extension test-2",
"version" : "1.0",
"permissions" : ["tabs"],
"browser_action" : {
"default_title": "This is extension test-2",
"default_icon": "icon.png",
"default_popup" : "popup.html"
},
"content_scripts": [
{
"matches": [ "http://*/*", "https://*/*" ],
"js": ["jquery.js", "content.js"]
}
],
"icons" : {
"19": "icon.png"
}
}
content.js
insertTooltip();
function insertTooltip () {
var ic = chrome.extension.getURL('remove2.js');
console.log(ic);
var tooltip = '<script type="text/javascript" src="'+ic+'"></script>';
console.log(tooltip);
$('body').append(tooltip);
};
popup.html
<html>
<head>
<script src="get.js"></script>
<script src="content.js"></script>
</head>
<body>
<div id="show"></div>
</body>
</html>
get.js
var currentURL;
chrome.tabs.getSelected(null, function(tab) { //<-- "tab" has all the information
currentURL = tab.url //<-- return the url.
//console.log(currentURL)
if(currentURL)
{
//alert(currentURL);
var div = document.getElementById('show');
div.innerHTML = currentURL;
}
});
please guide me about it......
You need to add your remove2.js script to your manifest.
{
...
"web_accessible_resources": [
"remove2.js"
],
...
}
More info here.

From a chrome extension how to check if a web-element present or not on page?

I am trying to build a chrome extension that would let me check if some elements are present on the page opened. Can someone help me here. Its giving null values when I use the code below.
manifest.json
{
"name": "A browser action with a popup that changes the page color.",
"version": "1.0",
"permissions": [
"tabs", "http://*/*", "https://*/*"
],
"browser_action": {
"default_title": "Set this page's color.",
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"manifest_version": 2
}
popup.html
<!doctype html>
<html>
<head>
<script src="jquery.js"></script>
<script src="popup.js"></script>
</head>
</html>
popup.js
if(jQuery('#nav').is(':visible')==true){
alert("true");
}else {
alert("false");
}
You have to use the "content script", which will run on the pages you specify. The popup page only gets called when user clicks your extension button.
{
...,
"content_scripts": [
{
"matches": [
"*"
],
"js": [
"script.js"
]
}
],
...
}
More info here: http://developer.chrome.com/extensions/content_scripts.html
Also, when checking, firs check if the element actually exists then check it's visibility:
var $nav = jQuery('#nav');
if ($nav.length > 0 && $nav.is(':visible') == true) {
alert("true");
} else {
alert("false");
}

Check checkbox on page with specific class

So I've had enough of this one page, I always have to check a checkbox if I want to send a private message, and when I send a message, I want it to be private always. So I decided to try making a google chrome extension about it. So I've created the default files, manifest.json, and popup.html, but I can't get it working.
What am I doing wrong?
Manifest.json:
{
"name": "xxx",
"version": "1.0",
"manifest_version": 2,
"description": "Automaattinen yksityiskommentointi.",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
popup.html:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>XXX</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="script.js"></script>
</head>
<body>
Moi
</body>
</html>
and script.js:
$(document).ready(function(){
$('.private-checkbox').prop('checked', true);
});
It would be too easy, right? I bet that this would only check the checkbox on the popup, but I want to check checkboxed in the tabs I open.
It worked for me with following change in popup.html
Download jquery.min.js and add it in your package as shown
Use
<script src="jquery.min.js"></script>
instead of
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
Only local script and and object resources are loaded
Script and object resources can only be loaded from the extension's package, not from the web at large. This ensures that your extension only executes the code you've specifically approved, preventing an active network attacker from maliciously redirecting your request for a resource.
Updated Manifest.json
{
"name": "xxx",
"version": "1.0",
"manifest_version": 2,
"description": "Automaattinen yksityiskommentointi.",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"content_scripts": [
{
"matches": ["http://www.facebook.com/*"],
"js": ["jquery.min.js","myscript.js"]
}
]
}
myscript.js
$(document).ready(function(){
$('.private-checkbox').prop('checked', true);
});

Chrome extension onclick issue

I want to create an extension that reacts to a click that searches for all the <ul>'s in the page, and surround them with a border. The problem is that the code doesn't work, and clicking on the extension icon doesn't search for anything.
mainfest.json:
{
"name": "My First Extension",
"version": "1.0",
"background_page": "background1.html" ,
"description": "The first extension that I made.",
"browser_action": {
"default_icon": "icon.png"
},
"permissions": [
"tabs", "http://*/*","https://*/*"
]
}
background1.html:
<!doctype html>
<html>
<head>
<title>Background Page</title>
<script src="js/jquery-1.3.2.min.js"></script>
<script>
function ul_checker(){
$('ul').addClass('ul_style');
$('ul').append('<div class="close">X</div>');
$('.close').addClass('style2');
}
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,
{code:"ul_checker()"});
});
</script>
</head>
<body>
</body>
</html>
Your extension is of type content script. You will have to specify what scripts will run on the page, see the manifest and description of the official documentation. I assume that you will have to include jquery as a content script :).
Therefore, accordingly to the documentation you will have to add the following in your manifest.json:
"content_scripts": [
{
"js": ["js/jquery-1.3.2.min.js"]
}
],

Creating Chrome Extension - How do I populate a form

I am creating a Google Chrome extension and want to populate a form field on a page.
I am trying something like this with no effect:
chrome.tabs.executeScript(null,
{code:"document.body.form[0].email_field='" + email + "'"});
}
You should make sure you have the "tabs" permission in your manifest.json:
{
"name": "123 Testing",
"version": "0.1",
"description": ":-)",
"browser_action": {
//"default_icon": "my_icon.png",
"default_title": "Click to fill the form"
},
"background_page": "background.html",
"permissions": [
"tabs",
"http://*/"
]
}
I believe you should access forms with document.forms and not document.body.form.
See my background.html file, and test it with google.com:
<html>
<head>
<script>
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {
code: "document.forms[0]['q'].value='Hello World!'"
})
});
</script>
</head>
<body></body>
</html>
(I would have usually used document.getElementById).
Good luck!