locate nie przekierowuje

locate nie przekierowuje
Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0

Witam! Mam pod buttonem akcję zapamiętania danej w localStorage i chciałbym jeszcze dodatkowo przekierować na inną stronę, a więc w HTMLu odpowiedni element to:

Kopiuj
<button id="guzik" type="submit" onclick="zrobWszystko()">wykonaj</button>

a w JS mam tak:

Kopiuj
function zrobWszystko()
{
	zapamietajDane();
	przekierujStrone();
}	

function zapamietajDane()
{
	localStorage.clear(); //czyści zawartość localStorage; 
	
	//wczytuje zawartośc pół formularza i przypisuje je odpowiednim zmiennym
	var zmienna = document.getElementById('zmienna').value;
	localStorage.setItem("zmienna", zmienna); 
}


function przekierujStrone()
{
    window.location = "blabla.html";
}

Niestety nie rozumiem dlaczego window.location nie przekierowuje. Ktoś potrafi wyjaśnić ten fenomen? Przetestowałem pod Chrome i FFx

edytowany 1x, ostatnio: Gregorius
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
0

document.location.href="adres";


miej95
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 8 lat
  • Postów:78
0

window.location to jedynie obiekt. Musisz jeszcze użyć metody href by przypisać aktualny adres.

Kopiuj
window.location.href = 'http://www.google.com';

Tak w ogóle to przedrostek window nie jest wymagany.

PS czy to na pewno jest metoda to nie wiem, chyba raczej jakies magic quote (nie pisze w js) ;)

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
miej95 napisał(a):

window.location to jedynie obiekt. Musisz jeszcze użyć metody href by przypisać aktualny adres.

Kopiuj
window.location.href = 'http://www.google.com';

Tak w ogóle to przedrostek window nie jest wymagany.

PS czy to na pewno jest metoda to nie wiem, chyba raczej jakies magic quote (nie pisze w js) ;)

href też nie działa (znaczy nie przekierowuje)

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
dzek69 napisał(a):

document.location.href="adres";

Też nie działa

sihox
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:106
0

Ja zawsze używam location.assign().
Ale u Ciebie chyba coś innego jest nie tak (jak wrzucę w konsolę nawet location = 'costam'; to też załadowuje stronę bez problemu).

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
sihox napisał(a):

Ja zawsze używam location.assign().
Ale u Ciebie chyba coś innego jest nie tak (jak wrzucę w konsolę nawet location = 'costam'; to też załadowuje stronę bez problemu).

no własnie w consoli jest ok, jak samo location="url" wypróbuję.

sihox
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:106
0

A nic się tam wcześniej nie sypie przypadkiem? W konsoli błędów czysto? Element o id='zmienna' istnieje? Sprawdź czy zadziała bez odpalania zapamietajDane().

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
sihox napisał(a):

A nic się tam wcześniej nie sypie przypadkiem? W konsoli błędów czysto? Element o id='zmienna' istnieje? Sprawdź czy zadziała bez odpalania zapamietajDane().

Działa, sprawdzałem. Najlepiej, że jak np po tym location dam alert to ten alert zadziała. Wiec juz nic nie rozumiem.

edytowany 1x, ostatnio: Gregorius
sihox
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:106
0

A może chcesz przejść na dokładnie tą samą stronę? Tzn. faktycznie nie zmienia się location.href.

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0

na JSFiddle też działa poprawnie (http://jsfiddle.net/Gregorius/javm5zz2/) może to jakieś gówniane ustawienie przeglądarek?

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
sihox napisał(a):

A może chcesz przejść na dokładnie tą samą stronę? Tzn. faktycznie nie zmienia się location.href.

Nie, na inną.

sihox
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:106
0

To w zasadzie nie może nie działać ;)
Zobacz jeszcze czy zadziała jak uruchomisz z konsoli samo przekierujStrone().

Ja bym jeszcze na wszelki wypadek wywalił type="submit" z tego przycisku - i tak nie powinien mieć szans wysłać tego formularza.

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
sihox napisał(a):

To w zasadzie nie może nie działać ;)

No właśnie dlatego se włosy już wyrywam i dostaję qrwicy. Ale żeby nie działało na 2 różnych przeglądarkach ?

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
sihox napisał(a):

Zobacz jeszcze czy zadziała jak uruchomisz z konsoli samo przekierujStrone().

W zasadzie działa, tylko nie wiem dlaczego się pojawia alert: null

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
0

daj jak największy kawałek kodu, który nie działa, w formie spakowanej (zip), gotowy do rozpakowania i uruchomienia. przyczyna leży gdzieś głębiej i trzeba to lepiej przebadać


Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
dzek69 napisał(a):

daj jak największy kawałek kodu, który nie działa, w formie spakowanej (zip), gotowy do rozpakowania i uruchomienia. przyczyna leży gdzieś głębiej i trzeba to lepiej przebadać

proszę: https://www.dropbox.com/s/jc7qgveltmjhaod/locateProblem_js.7z?dl=0

To wszystko jest dziwne, bo np. window.open('blabla.html') działa.

sihox
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 4 lata
  • Postów:106
0

Działa normalnie. Na chrome i ff.
Jedyne co to czepia się do brakującego nawiasu w fs2.js: var z = JSON.parse(localstorage.getItem("zmienna");

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
sihox napisał(a):

Działa normalnie. Na chrome i ff.
Jedyne co to czepia się do brakującego nawiasu w fs2.js: var z = JSON.parse(localstorage.getItem("zmienna");

No to qrwa czemu u mnie ni na FF ani na chrome nie działa? jakieś ustawienie przeglądarki? na dwóch różnych kompach już sprawdzałem

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
0

boże...
button submituje Ci formularz.

funkcja javascript się wykonuje, następnie strona przechodzi na adres z action w form - tyle że u Ciebie tego atrybutu nie ma, więc przeglądarka przechodzi na bieżącą stronę. przekierowanie przez javascript w tym przypadku jest mniej ważne.

strona przekierowuje za to do fs2 w momencie jak pole input zostawisz puste - wtedy przeglądrka NIE przechodzi pod action ponieważ nieuzupełnione jest pole z required - więc wtedy zezwala na przekierowanie z javascriptu.

potrzebujesz anulować oryginalne zdarzenie submitowania forumularza (google: cancel form submit), albo w ogóle zrezygnuj z formularza (ale wtedy required Ci nie zadziała - możesz za to sprawdzać czy pole jest uzupełnione z javascriptu)


Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0

EEEhm, nie rozumiem.

Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0

Tzn o ile dobrze zrozumiałem ,to

Kopiuj
 <button id="guzik" type="submit" onclick="zrobWszystko()" onsubmit="return false">

powinno wystarczyć ?

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Rzeszów
1

gotowiec dla leniwca:

Kopiuj
<button id="guzik" type="submit" onclick="zrobWszystko(); return false;">

ale proszę - przysiądź do tego


edytowany 1x, ostatnio: dzek69
Gregorius
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 8 lat
  • Lokalizacja:Poznań
  • Postów:102
0
dzek69 napisał(a):

gotowiec dla leniwca:

Kopiuj
<button id="guzik" type="submit" onclick="zrobWszystko(); return false;">

ale proszę - przysiądź do tego

Dzięki. Jednak wracając do powodu: może byłbyś skłonny inaczej sformułować Twoje poprzednie objaśnienie, bardziej dla idioty, bo w moim wieku to percepcja już nie ta co kiedyś. Bo niby trochę wygooglałem ale to nie jest ciągle dla mnie do końca zrozumiałe. Nie dość, ze przekroczyłem magiczny wiek lat 40 to jeszcze jestem początkujący jeśli chodzi o programowanie (no dobra jakieś 30 lat temu pisałem prościutkie programy na ZX81 w basicu)

sihox
A wczoraj mówiłem żeby wyrzucić submit... ;) http://4programmers.net/Forum/1085759
dzek69
@sihox - to by nic nie pomogło. button to z automatu submit
sihox
@dzek69 - o tym nie pomyślałem, ja zawsze używam type="button" dla przycisków, a te nigdy nie wyślą formularza domyślnie
szalonyfacet
  • Rejestracja:ponad 12 lat
  • Ostatnio:9 miesięcy
  • Lokalizacja:Dąbrowa Górnicza
1

dzekowi chodzi o to ze, jak naciskacz buttonj o id="guzik" to przegladarka wysyla ten formularz(takie jestz adanie przycisku submit) pod adres zadeklarowany w atrybucie action w formularzu. poniewaz ty nie amsz tego zadekarowanego to domyslnie przegaldarka wysyl;a formualrz pod ten sam adres z ktorego zaladowany jest formularz(de facto odswieza strone). jedyne co musiales zrobic to poleceniem return false; dopisanym po wykonaniu twojej powiedziec do przegladarki zeby nie przetwarzal formularza i nie robila tego co robic powinna.

formularz domyslnie po submicie sie wysyla. ty chcesz wykonac jakas akcje zamiast wyslania formularza, wiec musisz domyslna akcje wysylania formularza zablookowac (wlasnie komenda return: false;)

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)