Hmm a nie możesz po prostu wkleić tu kodu HTML strony, na której to testujesz? Sam kod HTML. Weź zrób sobie ten "Podgląd" czy cokolwiek i wstaw tu kod HTML, jaki to wypluje. Zewnętrzne skrypty nie będą działały gdy sobie zrobię z tego plik na localu, ale ustawię sobie <base /> i skrypty powinny się wczytać.
To, że skrypt jest dodawany z zewnątrz nie ma znaczenia.
Oprócz jednej rzeczy...
Skrypt dodajesz w head. Jeśli w tym skrypcie natychmiast odnosisz się do jakiegoś elementu z ciała dokumentu (z wnętrz elementu body), to to nie zadziała. Bo skrypt jest ściągany i wykonywany NATYCHMIAST gdy przeglądarka zobaczy tag <script ...>. Czyli skrypt jest odpalany gdy przeglądarka będzie kończyła przetwarzanie znacznika <head>, ale jeszcze nie zacznie <body>. Więc skrypt nie zobaczy niczego w <body>.
Rozwiązanie: sprawić, by kod odnoszący się do elementów DOM był wykonywany dopiero po załadowaniu strony. Pogooglaj o "onload", ale lepiej metodą addEventListener/attachEvent.
Prawdopodobnie to właśnie jest problemem. Jest to zachowanie jak najbardziej poprawne i logiczne i na szczęście lekarstwo jest bardzo proste.
edit:
A co mi tam, sam wykazałeś się chęciami, więc dam Ci gotowca (pisałem z palca i bez sprawdzania, czyt. mogą być literówki)...
addEventListener(window, 'load', initShare);
function initShare() {
// tu Twój kod
var FH = document.getElementById('firstHeading');
FH.innerHTML = 'test';
}
function addEventListener(element, eventName, callback, useCapture) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, useCapture || false);
} else if (element.attachEvent) {
element.attachEvent('on' + eventName, callback);
} else {
return false;
}
return true;
}
Być może Nonsensopedia ma już jakąś funkcję będącą odpowiednikiem addEventListener...