webForumDet fria alternativet

Komma åt och modifiera title-taggen med JS

JavaScript

14 svar · 739 visningar · startad av haider

Medlem sedan jan. 2003956 inlägg
Frågan#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?

Medlem sedan dec. 20025 483 inlägg
#2
top.document.title = "foobar";
Medlem 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.

Medlem 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);

Medlem 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?

Medlem sedan aug. 20039 340 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.

Medlem 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?

Medlem 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?

Medlem 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..

Medlem sedan aug. 20039 340 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
Medlem 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.

Medlem sedan aug. 20039 340 inlägg
#12

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

Medlem 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.

Medlem 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..

Medlem sedan aug. 20039 340 inlägg
#15

Bekräftar!

258 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)