webForumDet fria alternativet

Sätta funktioner i extern skriptfil och köra dem med inline-skript.

JavaScript

7 svar · 523 visningar · startad av Tinwëlint

Medlem sedan maj 2004451 inlägg
Frågan#1

Det är så att jag har några mejladresser som enkodas med hjälp av javascript (http://automaticlabs.com/enkoderform/). De upprepas på flera sidor på min site och därför tyckte jag att det vore smart att lägga alla definitionerna av funktionerna i en extern .js-fil och köra funktionerna när de behövs i koden. Jag importerar .js-filen i head och försöker köra funktionerna med hjälp av inline-skript i min html-kod. Detta fungerar inte och det beror väl antagligen på att funktionernna inte är globala och kan hoppa mellan olika skript-områden. Jag tänker för mycket php.
Men finns det då något smart sätt att göra det här på?
jag provade:

<script type="text/javascript" src="/script/m.js">
//<![CDATA[
m_foo();

//]]>
</script>

Men det hämtade inte heller in skriptet som man skulle ha kunnat hoppas (ovanför det som är skrivet). Det kanske inte går att lösa det på det här sättet alls med javascript. Man kan inte köra en include() i js som i php va? :p

Medlem sedan juni 20004 308 inlägg
#2

Funktionerna är globala även om de fysiskt existerar i en annan fil. Enda felet är att du antingen inkluderar scriptet via src-attributet eller lägger in javascript-koden i script-blocket (inte båda varianterna i samma <script>-block utan då får du lägga 2 script-block efter varandra vilket fungerar lika bra).

Medlem sedan maj 2004451 inlägg
#3

Jaha, vad trevligt. Hur ska jag då göra?
Om jag inkluderar den externa filen i head (eller högt upp body).

<script type="text/javascript">
Hur ska jag inkludera då om inte med src=""?
</script>
</head>

och i där jag vill köra funktionen:

<script type="text/javascript">

m_funktion()

</script>
Medlem sedan juni 200032 967 inlägg
#4

Varför ska du inte inkludera med src?
Det jojoxx skriver är att du inte kan både inkludera med src, och ha funktioner emellan, i samma <script>-taggar. (Blev lite snurrigt, dock...)

<script type="text/javascript" src="/script/m.js"></script>
</script>
m_foo();
</script>

mvh

Medlem sedan maj 2004451 inlägg
#5

Ok. Men det är ju det jag har provat som inte funkar. Då är det väl kanske fel på mitt javascript på nåt vis.

Medlem sedan juni 200032 967 inlägg
#6

Nej, men det brukar bli galet om man istället för language="javascript" anger type="text/javascript". Är det det du gjort?

Medlem sedan maj 2004451 inlägg
#7

Ja, på ett av ställena i .js-filen stod körningen av en funktion kvar. Vad fånigt.

r/ Ja nu funkar det precis som det ska.

Medlem sedan maj 2004451 inlägg
#8

Nej:
<script type="text/javascript">...

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)