Autor | Zpráva | ||
---|---|---|---|
Plom Profil * |
#1 · Zasláno: 8. 4. 2008, 16:27:55
Dobrý den, byl bych moc vděčný tomu, kdo by mi upravil následující javaskript.
Standardně funguje tak, že odkazy na stránkách směřující na jiný web otevírá v novém okně. Potřeboval bych ale, aby skript jednu "cizí" doménu přehlížel - aby se odkazy, tak jako v případě odkazů na "domací" server, otevíraly ve stejném okně prohlížeče. Asi by se to mělo realizovat pomocí proměnné (která by měla hodnotu názvu webu s výjimkou). Se svými znalostmi to ovšem nejsem schopen zrealiovat, byť jsem se o to ale pokoušel. function target_blank() { if (!document.getElementsByTagName) { // pokud neni funkce pro ziskani elementu podle tagu, ukoncit return false; } var anchors = document.getElementsByTagName('a'); var site = document.location.protocol + '//' + document.location.host; var regexp = new RegExp('^' + site); for (var i = 0; i < anchors.length; i++) { var href = anchors[i].getAttribute('href'); if (href && href.match(/^http/) && !href.match(regexp)) { anchors[i].onclick = function () { return !window.open(this.href); } } } return true; } window.onload = target_blank; Předem moc děkuji, možná se ten upravený skript bude hodit i někomu jinému. |
||
Plom Profil * |
#2 · Zasláno: 9. 4. 2008, 00:02:11
Vážně nikdo nevíte ? :-(
Zkoušel jsem to i takhle: function target_blank() { if (!document.getElementsByTagName) { return false; } var anchors = document.getElementsByTagName('a'); var site = document.location.protocol + '//' + document.location.host; var regexp = new RegExp('^' + site); for (var i = 0; i < anchors.length; i++) { var href = anchors[i].getAttribute('href'); if (href && href.match(/^http/) && !href.match(regexp)) { anchors[i].onclick = function () { return !window.open(this.href); } } } return true; } // nova funkce pro dalsi web, jehoz odkazy se budou otevirat ve stejnem okne function target_blank2() { if (!document.getElementsByTagName) { return false; } var anchors = document.getElementsByTagName('a'); var dalsiweb = "http://adresa.dalsiho.webu.cz"; var regexp = new RegExp('^' + dalsiweb); for (var i = 0; i < anchors.length; i++) { var href = anchors[i].getAttribute('href'); if (href && href.match(/^http/) && !href.match(regexp)) { anchors[i].onclick = function () { return !window.open(this.href); } } } return true; } window.onload = target_blank; window.onload = target_blank2; ... tedy pokus vykonat stejnou funkci tak nejak soubezne s první... problem ale je, ze v poradi druha funkce vzdy "prepise" tu prvni (pokousel jsem se teda prejmenovavat promenne...) - ve vysledku se pak na webu oteviraji do stejneho okna pouze odkazy na druhy (dodatecne pridany web) a jakekoli jine (smerujici i na stejnou domenu na jake je web) do noveho okna... Nejedná se o nic komečního, to z charakteru mého dotazu je i jistě všem jasné :-) a tak jsem za každou připomínku ( i nestadnadrní řešení) moc vděčný. |
||
Chamurappi Profil |
#3 · Zasláno: 9. 4. 2008, 00:52:13
Reaguji na Ploma:
Změň proměnnou „site“ uvnitř target_blank: var site = document.location.protocol + '//(' + document.location.host + '|adresa.dalsiho.webu.cz|dalsi.adresa.dalsiho.webu.info)'; |
||
Plom Profil * |
#4 · Zasláno: 9. 4. 2008, 01:34:23
Moc děkuji, funguje to přesně tak, jak jsem chtěl - dokonce ještě s možností v budoucnu přidávat další výjimky.
|
||
Časová prodleva: 4 dny
|
|||
Plom Profil * |
#5 · Zasláno: 13. 4. 2008, 02:19:12
Se předem moc omlouvám, že se k tomu vracím, ale sám na to nemohu přijít.
Našel jsem jiný skript (ten původní nefungoval s IE7): var links,domain,where,d,p; p = parent.document; d = document; domain = 'web-na-ktery-skript-neplati.cz'; where = 'page'; function setlinksVar(){ if (where == 'page'){ links = p.getElementsByTagName('a'); } else if (where == 'module'){ links = d.getElementsByTagName('a'); } } function externalLinks(){ for (var l = 0; l < links.length; l++){ if (links[l].href.indexOf(domain) == -1 && links[l].href.indexOf('http://') != -1){ links[l].target = '_blank'; links[l].title += ' - Opens In A New Window'; links[l].style.background = 'url(/images/ext_link.gif) no-repeat right 4px'; links[l].style.padding = '0 14px 0 0'; } } } setTimeout('setlinksVar();', 0); setTimeout('externalLinks();', 0.5); kde jsem se snažil použít výše uvedené řešení, které poskytl Chamurappi (fungovalo v předešlém kódu) - v novém kódu, který jsem teď uvedl už ale ne. domain = document.location.protocol + '//(' + document.location.host + '|adresa.dalsiho.webu.cz|dalsi.adresa.dalsiho.webu.info)'; Samozřejmě, je tam rozdíl v typu uvozovek, ale nemohu na to přijít (jsem už vyzkoušel snad všechny kombinace... Četl návody pro začátečníky js, ale pokaždé mě to svedlo na cestu tvoření polí ap. a z prohlížení jiných skriptů jsem taky nic nevyčetl. Ještě bych měl dotaz, jestli když by se odkazům kromě targetu přidala css třída s určitým názvem a byl by použit ještě jeden JS (který vykonává funkci ale až na základě nalezení příslušného názvu css třídy v html kódu), zda to funguje tak, že druhý skript ví o tom, že (prvním skriptem) odkazům přidaným target byla přidána i třída. druhý skript totiž zjišťuje přítomnost třídy takto: function bindBubbles(e){ lbActions=WSR_getElementsByClassName(document,"a","NÁZEV-HLEDANÉ-TŘÍDY"); for(i=0;i<lbActions.length;i++){ if(window.addEventListener){ lbActions[i].addEventListener("mouseover",attachBubble,false); lbActions[i].addEventListener("mouseout",detachBubble,false); }else{ lbActions[i].attachEvent("onmouseover",attachBubble); lbActions[i].attachEvent("onmouseout",detachBubble); Jená se o ukázku skriptu (celkové je moc dlouhý) WebSnapr, který vytváří bublinu s náhledem, jak vypadá web na nějž se odkazuje. Každopádně byl bych moc rád, kdyby mi někdo pomohl s úpravou té proměnné (chci aby skript fungoval pro 2 domeny) a druhý dotaz je jen ze zvědavosti. |
||
Časová prodleva: 16 let
|
0