» Poradna » Web a internet

Javascript bookmarklet - přechod na stránku a vyplnění formuláře

 |   |  Linux Chrome 89.0.4389.90

Zdravím,snažím se dát dohromady bookmarklet, který bude po kliknutí na tuto záložku vykonávat následující:1. Otevře na nové kartě požadovaný web2. Změní motiv do tmava (již vyřešeno)3. Vyplní několik položek formuláře pomocí ID a NAME4. Aktivuje poslední políčko yy (document.getElementById("yy").focus();)Hlavní problém je bod 1. nevím jak to udělat, aby prohlížeč neblokoval "vyskakovací okno". A dále, jak jednotlivé funkce spojit dohromady.Děkuji za návrhy...

Mohlo by vás také zajímat

Odpovědi na otázku

 | Microsoft Windows 10 Chrome 89.0.4389.91

1. by neměla být problém, třeba takový window.open by měl normálně fungovat. Jen nesmíš spamovat, tj musíš otevřít jen jednu stránku. Jak jich bude víc tak to prohlížeč asi bude blokovat.Viz: https://www.w3schools.com/jsref/tryit.aspMě se tady ten tab zcela normálně otevírá a žádný prohlížeč mi neřve ohledně blokovaných oken.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 89.0.4389.90

Zkusil jsem následující zápisy:javascript:(function() {window.open("https://www.w3schools.com");})();javascript:(void(window.open('https://www.w3schools.com&);))javascript:(window.open('https://www.w3schools.com&));javascript:window.open('https://www.w3schools.com&);Ani v jednom případě se nezdařilo okno otevřít. Když jsem to testoval s location.href, tak alespoň vyskočilo to varování, že je okno blokováno...Asi jsem natvrdlej, můžete prosím poslat Váš kód?Používám prohlížeč Brave, což by měl být technicky chrome...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 88.0.4324.182

Po odstranění syntaktických chyb to funguje uplně v pohodě. Kukal jsi do konzole jestli ti to čistě náhodou nevypíše co tomu vadí?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 89.0.4389.90

U druhého řádku to vypíše Uncaught SyntaxError: Unexpected token ';'U ostatních to nevypisuje nic.Smazal jsem středník mezi závorkami, pak to nevypisuje u žádného nic.Ani jeden řádek nefunguje

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 88.0.4324.182

To co je na řádku 2, 3 a 4 fungovat nemůže, jelikož tam chybí apostrov, a místo něj je na konci ampersand.Ale ještě když koukám na ten první řádek, tak to uprav na javascript:(function() {window.open("https://www.w3schools.com");}());Vytváříš tam anonymní funkci ("function(){...}") kteoru chceš ihned po definici spustit (" () "). (tzv closure) To všechno ale musí být uvnitř javascript:(). Ty jsi vlastně funkci zadefinoval, ale snažil jsi se ji spustit až v okamžiku, kdy ukončíš provádění skriptu. Ergo, funkci jsi sice definoval, ale nikdy nespustil.Tady je ale myslím použití closure zbytečné. javascript:(window.open('https://www.w3schools.com&));Podle mě musí fungovat. Je to vlastně to stejné jako je na prvním řádku, jen to spouštíš přímo, místo aby jsi to naplnil do funkce a spustil až tu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 88.0.4324.182

Jo aha, on se ten apostrov jako ampersand zobrazuje místo apostrofu až tady , tak v tom případě tam chyba není

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 89.0.4389.90

>> javascript:(window.open('https://www.w3schools.com&));>> Podle mě musí fungovat.No ono to "funguje" pokud mám otevřenou nějakou stránku, ale po kliknutí se zobrazí v panelu adresa varovný symbol... "Byla zablokována vyskakovací okna: https://www.w3schools.com"Pokud se pokusím spustit to na nové/prázdné záložce, tak nedojde ani ke zobrazení tohoto symbolu a nestane se nic (ani v konzoli).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 89.0.4389.90

Tak bod 1. se mi podařilo nakonec ošetřit tímto zápisem:javascript: (function() {var url = ('https://www.w3schools.com&);w = window.open(url, 'w', '');})();

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Vyplnění, Vyskakovací okno, Hlavní problém, Motiv