Gå til innhold

Chrome extension, Problemer med og lagre options. (localStorage)


Anbefalte innlegg

Hei, har nettopp begynt og fikle med en Chrome extension, og har litt problemer med at den ikke lagrer options som brukeren setter under alternativer.

(Jeg kan ikke nesten ikke en dritt javascript, og har fulgt en tutorial veldig nøye, og endra den så den passer for mine formål.)

 

her er hele greia extension.rar

 

Så vidt jeg kan se så er det her nokså riktig:

 

options.html

<html>
<head>
<title>Language</title>
<script type="text/javascript" src="options.js"></script>
</head>
<body onload="loadOptions()">
<h1>Language</h1>
<select id="color">
	<option value="no">Norsk</option>
	<option value="en">English</option>

</select>
<br />
<button onclick="saveOptions()">Save</button>
<br />
<button onclick="eraseOptions()">Restore default</button>
</body>
</html>

 

options.js

var defaultLang = "en";

function loadOptions() {
var language= localStorage["language"];

// valid languages are en and no
if (language == undefined || (language != "en" && language != "no")) {
	language = defaultLang;
}

var select = document.getElementById("lang");
for (var i = 0; i < select.children.length; i++) {
	var child = select.children[i];
		if (child.value == language) {
		child.selected = "true";
		break;
	}
}
}

function saveOptions() {
var select = document.getElementById("lang");
var lang = select.children[select.selectedIndex].value;
localStorage["language"] = lang;
}

function eraseOptions() {
localStorage.removeItem("language");
location.reload();
}

 

Men, her er jeg 100% sikker på at det er feil, uten at jeg kan si hva (sikkert alt)

Men greia er at når brukeren foreksempel velger norsk under alternativer så skal den hente stuffet fra en annen link, og når man velger engelsk noe helt annet.

 

popup.html

<script>
var popup = localStorage.language || 'lang';

if (popup == 'en' {

('src', 'http://output75.rssinclude.com/output?type=js&id=80977&hash=7260950496c11811f7ff925935e664c9');
}
else if (popup == 'no') {
INGEN TING HER
}</script>

Endret av lordbost
Lenke til kommentar
Videoannonse
Annonse

Da har jeg oppdatert koden litt (den fungerer fremdeles ikke)

 

popup.html

<script>
$(document).ready(function() {
var popup = localStorage.language || 'lang';

if (popup == 'en') {

('src', 'http://output75.rssinclude.com/output?type=js&id=80977&hash=7260950496c11811f7ff925935e664c9');
}
else if (popup == 'no') {
INGEN TING HER
}
})
</script>

Lenke til kommentar

Var den jeg tenkte på ja, hehe! Da tok jeg feil :/

 

EDIT:

<select id="color">

 

Skal ikke denne isåfall være

<select id="lang">

i options.html

 

Regner med at det er den du prøver å hente i options.js under loadOptions() og saveOptions()

var select = document.getElementById("lang");

Endret av Lek1
Lenke til kommentar

Vel nå føler jeg meg nokså dum, hehe.

Tusen takk for hjelpen :)

 

nå saver den og alt det. Men får fremdeles ikke til den delen her.

 

<script>
$(document).ready(function() {
var popup = localStorage.language || 'lang';

if (popup == 'en') {

('src', 'http://output75.rssinclude.com/output?type=js&id=80977&hash=7260950496c11811f7ff925935e664c9'
);
}
else if (popup == 'no') {
INGEN TING HER
}
})
</script>

Jeg nesten helt sikker på at jeg har gjort noe feil her, som man kanskje kan se fra koden, så er det jeg prøver og få til at den skal vise en ting når man har valgt "en" og en annen ting når man har valgt "no" så hvis noen kunne hjulpet meg i riktig retning ville jeg vært veldig takknemlig :)

Lenke til kommentar

Denne linja, er det chrome spesifikt, eller prøver du deg på å loade via jQuery?

('src', 'http://output75.rssinclude.com/output?type=js&id=80977&hash=7260950496c11811f7ff925935e664c9');

 

Så foresten at du mangler semicolon når du avslutter

$(document).ready(function() {});

Lenke til kommentar

Vel, jeg tittet litt på kilde koden til chromemilk:

http://code.google.com/p/chromemilk/source/browse/src/popup.html

og leste litt her

http://julianapena.com/2010/01/how-to-build-a-chrome-extension-part-3-loading-any-web-page-in-a-popup/

(document).ready(function() {
var popup = localStorage.popup || 'igoogle';

var frame = document.createElement('iframe');

frame.setAttribute('width', '100%');
frame.setAttribute('height', '100%');
frame.setAttribute('frameborder', '0');
frame.setAttribute('id', 'rtmframe');

if (popup == 'gmail') {
	// open gmail gadget
	$('body').height(300).width(200);
	frame.setAttribute('src', 'http://www.rememberthemilk.com/services/modules/gmail/');
}
else if (popup == 'iphone') {
	// open iphone web app
	$('body').height(480).width(320);
	frame.setAttribute('src', 'http://i.rememberthemilk.com/');
}
else if (popup == 'mobile') {
	// open mobile web app
	$('body').height(300).width(200);
	frame.setAttribute('src', 'http://m.rememberthemilk.com/');
}
else {
	// igoogle and default
	$('body').height(400).width(400);
	frame.setAttribute('src', 'http://www.rememberthemilk.com/services/modules/googleig/');
}

document.body.appendChild(frame);
});

 

så det ble vel egentlig til at jeg endra på det til det så ut som det kunne funke.

 

 

Så foresten at du mangler semicolon når du avslutter

Den semicolon'en er her

 

INGEN TING HER
}
})

 

Denne linja, er det chrome spesifikt, eller prøver du deg på å loade via jQuery?

Her ble det til at jeg gjetta meg fram til at kanskje kom til å virke.

 

for hvis jeg vil ha greie i et html dokument foreksempel så blir det sånn her

 

<script type="text/javascript" src="http://output92.rssinclude.com/output?type=js&id=80976&hash=bd1bd667082975c95192e20927d5a60a"></script>

 

og jQuery har jeg ingen ide hva er.

 

Jeg antar vel egentlig at store deler av popup.html må skrives på nytt, men problemet er da at jeg ikke har noen ide hva jeg må gjøre. :p

Endret av lordbost
Lenke til kommentar

Bare hyggelig! Lærte litt om chrome extensions så, det var jo bare morsomt :)

 

Det er bare å inkludere en css fil som styler iframen litt slik at den ikke ser så dull ut, f.eks fjerne scrollbar;) Hvis du skal endre designet på det som er inne i iframen må du nok endre det som kommer fra linken den henter det fra :)

 

Hvis du vil ha litt forklaring på hva som foregår i koden så bare si ifra :)

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...