2

私は以下のjsを持っています。これもこのフィドルにあります

    (function () {
        var test = document.createElement('script');
        test.type = 'text/javascript';
        test.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.example.com/test.js';
        console.log(test);
        document.getElementsByTagName('body')[0].insertAdjacentHTML("beforeEnd", test);
    })();

ページの一番下の js 終了タグの直前に js を配置したいと考えています。

console.log で表示すると、期待どおりの結果が得られます。どれが

<script type=​"text/​javascript" src=​"http:​/​/​www.example.com/​test.js">​&lt;/script>​

ただし、実際にページに追加しようとすると、 [object HTMLScriptElement] が表示されます

ここで何が欠けていますか、またはこれを達成するために試みることができる別の方法はありますか?

4

3 に答える 3

4

insertAdjacentHTMLdom ノードではなく、html を引数として取ります。代わりにappendChildを使用します

document.getElementsByTagName('body')[0].appendChild(test);
于 2013-07-07T22:56:31.573 に答える
2

私は少し異なるアプローチを取り、スクリプトを body ノードの子として追加しようとしました。コードを使用した例を次に示します。

(function (document) {
    var test = document.createElement('script');
    test.type = 'text/javascript';
    test.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.example.com/test.js';
    document.getElementsByTagName('body')[0].appendChild(test);
})(document);

望ましい結果が得られたようです。

お役に立てれば!

于 2013-07-07T23:07:47.863 に答える
1

「beforeend」はすべて小文字にする必要があると思います。

[...] document.getElementsByTagName('body')[0].insertAdjacentHTML("beforeend", test);

https://developer.mozilla.org/en-US/docs/Web/API/element.insertAdjacentHTML

この場合の正しい挿入方法である Musa の回答については、上記を参照してください。

于 2013-07-07T22:54:46.000 に答える