Autor Zpráva
Plom
Profil *
Poradí mi někdo, prosím, jak upravit proměnnou (nebo někde skript) tak, aby proměnná hostmane obsahovala 2 hodnoty (ještě jednu domenu, kromě té domácí).

JavaSkript přidává odkazům mimo web css třídu a target.
this.blankwin = function(){
	var hostname = window.location.hostname;
	hostname = hostname.replace("www.","").toLowerCase();
	var a = document.getElementsByTagName("a");	
	this.check = function(obj){
		var href = obj.href.toLowerCase();
		return (href.indexOf("http://")!=-1 && href.indexOf(hostname)==-1) ? true : false;				
	};
	this.set = function(obj){
		obj.target = "_blank";
		obj.className = "external";
	};	
	for (var i=0;i<a.length;i++){
		if(check(a[i])) set(a[i]);
	};		
};



// script initiates on page load. 

this.addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",blankwin);


Podobný dotaz jsem už asi týden zpětně psal v sekci Javascript.
Za jakoukoli radu moc děkuji.
peta
Profil
Plom
Asi neumis zapsat dotaz, pak na nej nelze odpovedet. Jestlize na neco nelze odpovedet, pak se asi odpovedi nedockas?

Poradí mi někdo, prosím, jak upravit proměnnou (nebo někde skript) tak, aby proměnná hostmane obsahovala 2 hodnoty (ještě jednu domenu, kromě té domácí).

"jak upravit proměnnou (nebo někde skript) tak"
Jakou promennou?

"proměnná hostmane obsahovala 2 hodnoty"
Promenna muze nabyvat pouze jedne hodnoty. Pole muze obsahovat pole hodnot, cili vice promennych.
jakpsatweb - javascript - pole
jakpsatweb - javascript - priklady - gethttpvars

script...
hostname = hostname.replace("www.","").toLowerCase();
http://www.volny.cz/peter.mlich/www.htm#mssub19
jakpsatweb - javascript - priklady - (regularni vyraz)
jakpsatweb - javascript - (objekt string) - (regularni vyraz)

Treba ti to pomuze.
Z tveho popisu jsem bohuzel nepochopil, co ma byt VSTUP, co ma byt VYSTUP nebo ceho se pokousis vlastne docilit a proc.
Podrobny priklad napovi.
Cas odpovedi je 2-7 dni. Pokud nemas cas cekat, je mozne, ze ti nekdo odpovi driv, ale pak nemas vyber vice moznosti a vetsinou ta prvni odpoved muze byt pro tvuj pripad nepouzitelna.
TSD
Profil *
peta

Půl minuty mně to trvalo, ale problém jsem pochopil.
Jak moc ti zvyšuje návštěvnost to cpaní linků do diskuse při každé příležitosti? Stojí to za to?
Plom
Profil *
Já se moc omlouvám, pokud tady vytvářím příspěvky o ničem, je to ale pak přesně opak toho, čeho jsem se snažil.

Skript, který jsem uvedl funguje tak, že odkazy otevírá do nového okna a přidává jim css třídu (pak se dá v css takovým odkazům přidat ikonka, jinak obarvit, prostě odlišit). Skript ale přehlíží odkazy na web, na kterém běží, to znamená neotevírá je v novém okně a žádnou třídu jim navíc nedává.

Celý můj dotaz je o tom, že mám jednu domenu navíc a potřebuji, aby se k ní skript choval jako k té domácí, tedy nepřidával jí css třídu a neotevíral odkazy na tu domenu v novém okně.

Teď už vím, že se to dělá pomocí pole, kdyby byl ale někdo tak hodný a měl čas, byl bych přesto rád, kdyby mi zde napsal, jaký řádek se změní a jak (kde bude možné přidat název té mé druhé domény...)

Je pravda, že dotaz jsem zde položil trochu kratší - myslel jsem, že bude větší šance, že někdo odpoví na kratší text než na dlouhý (tak jako v tom druhém vlákně o kterém jsem se zmínil).

Rozhodně neberu jako samozřejmost, že mi někdo odpoví v řádech minut, hodin a do diskuze se neobracím s kdejakou prkotinou, kterou lze dohledat googlem, ale s tímto opravdu už několik dní nemohu hnout.
peta
Profil
TSD
Problem jsi pochopil, ale reseni nedal? Z toho vyplyva, ze kecas. Nebo aspon napovedu pro ty mene inteligentni, mne? :)

Nejde o navstevnost. Jde o to, ze jsem si dal tu praci a linky sesbiral, kdyz je nekdo uvedl do fora. Kdyby takova stranka byla na jakpsatweb, odkazuji na jakpsatweb. Idealne, kdyby ji mohl editovat kazdy podobne jako wiki. Totez by mohlo byt cele jakpsatweb sepsane do wiki.

Plom
Aha, takze mas 2 ruzne domeny a potrebujes, aby odkazy pro obe byli stejne.
Mno, ale jina domena je v podstate externi link. Pokud nefunguje, tak by mel byt na to uzivatel aspon upozornen jako na jiny server.
V tom pripade to treba udelat trosku jinak...

var hostname = window.location.hostname;
// pryc
hostname = hostname.replace("www.","").toLowerCase();
// pryc
hostname1 = "aaa";
//pridat
hostname2 = "bbb";
//pridat
var a = document.getElementsByTagName("a");
this.check = function(obj){
var href = obj.href.toLowerCase();
return (href.indexOf("http://")!=-1 && href.indexOf(hostname)==-1)
// && (href.indexOf(hostname1)!=-1 || href.indexOf(hostname2)!=-1)

Ty to mas nejake divne, protoze indexOf() hleda retezec v retezci.
hledej('http') && (hledej('aaa') nebo hledej('bbb'))
Cili pokud tam je http a soucasne aaa nebo bbb, vrat true.
Problem toho zapisu je, kdyz...
http://adresa.cz/aaa
http - je
aaa - je
http://adresa.cz/script?x=aaa
http - je
aaa - je

ps. samozrejme muzes pouzit pole, ale myslim, ze 2 promenne jsou pro tebe srozumitelnejsi.
TSD
Profil *
peta
Že jsem problém pochopil, neznamená, že ho umím vyřešit. V JS neumím nic.

Kdybych si udělal statistiku, tak minimálně 20% z toho co kamkoliv píšeš, obsahuje odkaz na tvůj web. A to ne na konkrétní řešení, ale na výpis poněkud pofidérní sbírky, kde bych si netroufl odhadovat, jaká část z těch skriptů je tvoje práce.
los
Profil *
Stačí ti upraviť testovaciu funkciu tak, aby kontrolovala ďalšiu podmienku, čiže doplniť na správne miesto toto: && href.indexOf("mojadalsiadomena.cz")==-1

Trochu by som to upravil, aby to fungovalo spoľahlivejšie. Napr. takto (netestované):
window.onload = function() {
	var currentHostname = location.hostname.replace(/^(https?:\/\/)www\./, "$1");
	var hostnames = [currentHostname, "mojadalsiadomena.cz"];
	var dictionary = {};
	
	for (var i = 0, len = hostnames.length; i < len; ++i)
	    dictionary[hostnames[i]] = true;
	
	for (var i = 0, anchors = document.getElementsByTagName("a"), anchor; anchor = anchors[i]; ++i) {
		var match = anchor.href.match(/^https?:\/\/(?:www\.)?(.*?)\//);

		if (!match || !dictionary[match[1]]) {
		    anchor.target = "_blank";
		    anchor.className = "external";
		}
	}
};
peta
Profil
TSD
Hele, jestli mas s tim problem, ocekavam odkaz na tvou stranku, ktera dane problemy resi. Klidne mi to posli na mail.
Vetsina odkazu ze stranky www odkazuje nekam ven. Obvykle je to bud literatura nebo sbirka ruznych prikladu, ktere umi, co potrebuje.

Jak uz jsem rekl, kdyby takova stranka byla na jakpsatweb nebo jsem mel moznost menit priklady na jakpsatweb, tak bych odkazoval tam.

Myslim, ze tohle je dost mimo tema, pis mi na mail.
los
Profil *
Tak ešte oprava prvého riadku, ale na to by si prišiel:
var currentHostname = location.hostname.replace(/^www\./, "$1");
Plom
Profil *
los Moc Vám děkuji, skript funguje přesně tak, jak jsem chtěl - odzkoušeno ve více prohlížečích.
Také děkuji za ten dodatečně přidaný první řádek - sám bych na to totiž nepřišel.
Děkuji všem zúčastněným.
Plom
Profil *
Já se omlouvám, že se k tomu po skoro měsící ještě vracím, ale prakticky skoro ten měsíc jsem zkoušel přijít na to, jak tento skript upravit, aby opomíjel odkazy jako
<a href="javascript:
a
<a href="mailto:

Moje pokusy (např. se zapojením skriptů ověřující správný formát emailu) byly bezvýsledné, a na netu jsem také nenašel nic, čeho bych se mohl chytit - snad jen se naučit celý javascript...
Nejlepší by bylo, kdyby skript nepřidával tu třídu external odkazům obsahující právě slova mailto a javascript
Plom
Profil *
Teď jsem si ještě uvědomil, že v případě toho <a href="javascript: je nežádoucí i to otevírání do nového okna - takže kdyby mi někdo s tímto skriptem pomohl, aby nepřidával ani class ani target výše uvedeným typům odkazů, byl bych moc vděčný. Ten skript je pro mě moc důležitý a myslím si, že by našel využití i na jiných webech.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0