webForumDet fria alternativet

Komma åt och modifiera title-taggen med JS

14 svar · 739 visningar · startad av haider

haiderMedlem sedan jan. 2003956 inlägg
#1

För er som snokat i CGI forumet så kommer ni se en fråga som jag ställt som liknar denna - den har inget med denna här att göra (inte helt i alla fall ;) )

Oki - då har jag ett frame-system. Topframen, den som innehåller framesettet har en egen title. Som ju alltså är statisk. Som alltså inte är så värst kul.

En tanke jag haft var att via sidan som befinner sig i framesettet påverka sin parents title-tag.
Går det?

Peter SMedlem sedan dec. 20025 483 inlägg
#2
top.document.title = "foobar";
haiderMedlem sedan jan. 2003956 inlägg
#3

Tack Pete - ska inte klaga över dess enkelhet.
Ibland förväntar jag mig det värsta när det i själva verket inte är mkt svårare än så ;-)

Ska testa med top.document.title = document.title. Funkar det inte ska jag testa med this eller self.

haiderMedlem sedan jan. 2003956 inlägg
#4

Såhär har jag gjort

av vana så har jag javascripten externt i .js-filer.
De rader skrev jag för att utföra en kontroll:

alert(top.document.title');
alert(document.title');

Det visar sig att den kör processen innan dokumentet har hunnit ladda klart.
Sen provade jag mig fram med en herrans massa onLoad kombinationer, men inget hjälpte. Den körde alerten på momangen hela tiden.

Vad är den rätta metoden?

I grund o botten ville jag komma på hur man ska skriva onLoad raden - när jag väl visste det, skulle jag använda den till .onLoad=(top.document.title = document.title);

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#5
window.onload = function()
{
	top.document.title = document.title;
}

Får man fråga varför du vill ändra titeln på sidan? Sökmotorcloaking?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6
window.onload=function(){top.document.title=document.title;};

Erik Juhlin » Troligen vill han att undersidor i ett frameset ska förändra titelraden.

haiderMedlem sedan jan. 2003956 inlägg
#7

Nitro: jepp, hur visste du? Du har inte nån hemlig webcam här i lägenheten som kollar upp allt jag gör? :-)

O vad är sökmotorcloaking för nåt?

haiderMedlem sedan jan. 2003956 inlägg
#8

Jag upptäckte att det kan ta lång tid tills dokumentet laddas.
Scriptet placeras ju oftast under <title> taggen, kan man inte köra något som är snabbare än window.onload? Eller sidan är kanske inte ens ordentligt laddad att ett JS kan påverka title-taggen än?

Förslag?

sl0kMedlem sedan maj 2005562 inlägg
#9

följande fungerar i åtminstone firefox

window.addEventListener("load", dinFunktion, true);

kommer att triggas tidigare än window.onload.. ju högre upp i hierarkin desto tidigare..

nitro2k01Medlem sedan aug. 20039 342 inlägg
#10

addEventListener funkar som sagt inte i IE, om denna lösning ska vara cross-browser-kompatibel är följande ett alternativ:

if (window.addEventListener)
  window.addEventListener("load", dinFunktion, true); // FF, Opera
else if(window.attachEvent)
  window.addEventListener("onload", dinFunktion); // IE, Opera
else
  window.onload = dinFunktion;// Andra
haiderMedlem sedan jan. 2003956 inlägg
#11

Nitro: Jag tänkte väl så. Då är det bara onLoad som gäller alltså.
Det verkar som om hela dokumentet _måste_ laddas innan javascript fattar vad som är dokumentets titel eller? För det går viss inte att bara placera ett script i början på dokumentet och förvänta sig att det ska funka (jag kan i o för sig missta mig). Det enda som hittills funkat verkar onLoad - jag hoppades bara att det skulle gå att göra nåt snabbare.

Äsch, jag fortsätter nog med det för alla plattformar.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#12

Gör det du, men onload stavas med litet l!

haiderMedlem sedan jan. 2003956 inlägg
#13

OJ, då får det bli litet l. Tydligen har jag haft den ovanan sen innan. Tack för tipset.

sl0kMedlem sedan maj 2005562 inlägg
#14

nitro2k01 skrev:

addEventListener funkar som sagt inte i IE, om denna lösning ska vara cross-browser-kompatibel är följande ett alternativ:

if (window.addEventListener)
  window.addEventListener("load", dinFunktion, true); // FF, Opera
else if(window.attachEvent)
  window.addEventListener("onload", dinFunktion); // IE, Opera
else
  window.onload = dinFunktion;// Andra

ett litet skrivfel tror jag ..

du hade missat skriva attachEvent för ie..

if (window.addEventListener)
  window.addEventListener("load", dinFunktion, true); // FF, Opera
else if(window.attachEvent)
  window.attachEvent("onload", dinFunktion); // IE, Opera
else
  window.onload = dinFunktion;// Andra

/red
har inte testat själv . men addEventListener("load", dinFunktion, true) ska triggas före onload eventet om jag fattat rätt.. det exekveras i "capturing" fasen o inte i "bubble" som onload gör..

http://www.quirksmode.org/js/events_order.html

men som sagt så stödjer inte IE addEventListener än ..
addEventListener har ju fördelen att man kan använda this i den , vilket inte attachEvent lr onload klarar..

nitro2k01Medlem sedan aug. 20039 342 inlägg
#15

Bekräftar!

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)