Diskuze: Zablokování tvorby nových oken

JavaScript JavaScript Zablokování tvorby nových oken

Avatar
marekhladky
Člen
Avatar
marekhladky:

Ahoj, mám webovou aplikaci psanou v ASP.NET, kterou jsem převzal na dodělání. Drtivá většina stránek se otevírá do nového okna pomocí JavaScriptu. A já bych potřeboval aby se vše otvíralo v jednom, nejlépe v iframu. Protože je aplikace psaná dosti nelogicky a už jsem strávil spoustu času nad tím jak to spravit nějak pěkně. Tak bych chtěl najít způsob jak někde přesměrovat všechna nová okna do toho iframu. Pokud by mi někdo dokázal poradit nebo alespoň nasměrovat byl bych mu moc vděčný.

 
Odpovědět 12.11.2014 17:58
Avatar
Matej
Člen
Avatar
Matej:

Nove okno sa vytvara pomocou window.open(url) , takze ak to chces spravit ako si napisal (cez iframe) zmen funkciu ktora otvara nove okno , na funckiu ktora zmeni src iframe napr:

<iframe id="iframe"></iframe>
<a href="blabla.com"><p onclick="zmensa()">click</p></a>
function zmensa()

{
event.preventDefault();
var iframe=document.getElementById("iframe");
iframe.src=event.target.parentNode.href
}
Editováno 12.11.2014 20:05
 
Nahoru Odpovědět  ±0 12.11.2014 20:02
Avatar
Fredep
Redaktor
Avatar
Odpovídá na marekhladky
Fredep:

Jsi si jistý, že se to otevírá pomocí javascriptu? V HTML stačí každému odkazu nastavit atribut target="_blank" který způsobí otevření do nového okna. Pokud je smažeš, vše by se mělo otevřít v aktuálním.

Pracovat s rámy bych ti nedoporučoval, neboť se to v dnešní době nepoužívá a při přechodu na jinou stránku v rámci se nemění URL adresa, takže nemůžeš někomu poslat odkaz... ;)

Nahoru Odpovědět 12.11.2014 20:24
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na marekhladky
Daniel Vítek:

Přes jQuery:

$("a").click(function(e){
  e.preventDefault();
  $("#iframe").attr("src", $(this).attr("href"));
});
 
Nahoru Odpovědět 12.11.2014 20:29
Avatar
Matej
Člen
Avatar
Odpovídá na Fredep
Matej:

" Drtivá většina stránek se otevírá do nového okna pomocí JavaScriptu."
Ja som sa riadil podla toho :D

 
Nahoru Odpovědět  ±0 12.11.2014 20:34
Avatar
marekhladky
Člen
Avatar
marekhladky:

Děkuji za odpovědi vyzkouším a napíšu výsledek. Já vím že tohle řešení není nejvhodnější, ale ze všech možností mi tohle zatím vypadlo jako nejlepší. To že se nebude měnit URL nevadí, spíš je to možná k dobru.

 
Nahoru Odpovědět 12.11.2014 20:40
Avatar
Matej
Člen
Avatar
Odpovídá na Daniel Vítek
Matej:

Je to prakticky to iste co si postol ty len ja som vlozil <p> tag do <a> tagu (od html 5 je to mozne , opravte ma ak sa mylim :D)

//fredep myslel som ze odpovedas na moj komentar

 
Nahoru Odpovědět  ±0 12.11.2014 20:51
Avatar
marekhladky
Člen
Avatar
Odpovídá na Daniel Vítek
marekhladky:

Ahoj, tak to vypadá že to částečně funguje, ale stránka se zobrazí v nové záložce místo nového okna a bohužel se nenačte. Muže na to mít vliv že je v odkazu postBack ? Odkaz viz. níže.

<a class="ctl00_cntMain_ctl00_FfSrna_SrnaId_treemenu_0 ctl00_cntMain_ctl00_FfSrna_SrnaId_treemenu_1" href="javascript:__doPostBack(&#39;ctl00$cntMain$ctl00$FfSrna$SrnaId$treemenu&#39;,&#39;s1054&#39;)" onclick="TreeView_SelectNode(ctl00_cntMain_ctl00_FfSrna_SrnaId_treemenu_Data, this,&#39;ctl00_cntMain_ctl00_FfSrna_SrnaId_treemenut0&#39;);" id="ctl00_cntMain_ctl00_FfSrna_SrnaId_treemenut0">1         Vlastnosti</a>
 
Nahoru Odpovědět 14.11.2014 10:34
Avatar
marekhladky
Člen
Avatar
Odpovídá na Daniel Vítek
marekhladky:

Tak zpět, nefunguje to. To se zase objevila chyba někde, jinde že to vyskakuje v nové záložce a navíc se to nenačte.

 
Nahoru Odpovědět 14.11.2014 11:52
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 14.11.2014 14:57
Avatar
marekhladky
Člen
Avatar
Odpovídá na Daniel Vítek
marekhladky:

Jo mám už jsem přišel na to kde byla chyba. No nicméně to pořád ještě nefunguje :-D.

Pokud jsem ten kód dobře pochopil. Tak to udělá to, že vyhledá tag iframe a atributu src nastaví aktuální odkaz ?

A to pro ten můj případ nejde. Protože ten iframe není na té stránce z které klikám na ten odkaz.

Pokud to není jasné, tak jak budu doma tak to rozepíšu nějak srozumitelněji.

 
Nahoru Odpovědět 14.11.2014 15:28
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na marekhladky
Daniel Vítek:

1. Ten kód vyhledá element s ID "iframe", to znamená že v případu iframu to je

<iframe id="iframe"></iframe>

2. Chápu správně že chceš otevřít odkaz v iframu, který je na jiné stránce ?

 
Nahoru Odpovědět 14.11.2014 15:31
Avatar
marekhladky
Člen
Avatar
marekhladky:

Tak to jsem pochopil skoro správně, ale na situaci to nic moc nemění.

Udělal jsem náčrt jak to asi funguje.

 
Nahoru Odpovědět 14.11.2014 15:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.