Mam coś, co nazwiemy "widżetem" ... i chcę wstawić ten widget (ostatecznie tylko iframe
) w bieżącym położeniu znacznika skryptu.Wstawianie elementu iframe w bieżącej lokalizacji znacznika skryptu?
Więc może masz:
<p>Some example text</p>
<script src="http://example.com/widget.js" class="widget" async></script>
<p>More text</p>
W tym pliku widget.js
, tam jest taka:
var createIframe = function() {
var parent = document.getElementsByClassName('widget');
var iframe = document.createElement('iframe');
iframe.src = '//example.com'
// Works, but just inserts it at the end
document.body.appendChild(iframe);
// Does not work...just doesn't seem to do anything
document.createElement("div").appendChild(iframe);
}
window.onload = function() {
createIframe();
}
A jak zauważono w komentarzu kodu robi document.body.appendChild(iframe)
działa dobrze, ale po prostu wstawia iframe na samym końcu dokumentu.
Ale tak naprawdę chcę tylko wstawić element iframe tam, gdzie znajduje się znacznik skryptu. Ta document.body.appendChild(iframe)
jest moją próbą, ale dosłownie po prostu nie wydaje się nic robić (brak iframe i brak błędów).
Jak zatem wstawić element iframe w tym samym miejscu, co znacznik skryptu?
nextSibling jest obsługiwana tylko od IE9 https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling –
Dzięki za heads-up, ale zupełnie nie interesuje mnie wspieranie legalnego IE w prawie każdym kodzie, który piszę. [jQuery 2 został wydany w kwietniu 2013 r.] (http://blog.jquery.com/2013/04/18/jquery-2-0-released/) i nie obsługuje IE <9. Czas iść dalej. –
var thisScript = document.scripts [document.scripts.length - 1]; poda ci tylko bieżący skrypt, jeśli nie jest osadzony przy użyciu asynchronicznych lub odroczonych atrybutów i nie został wstawiony przez zapis asynchroniczny. – Michael