在开始标记后立即放置脚本

时间:2013-02-08 09:45:43

标签: javascript jquery

我想放置一个Google代码管理器脚本,根据Google Tag文档,该脚本应该紧跟在开始标记之后。

由于我们无法更改源代码,因此我们必须使用以下代码段附加脚本。

<script type="text/javascript">
(function () {
    var url = "path/to/js/file";
    var gtm = document.createElement('script');
    gtm.type = 'text/javascript';
    gtm.async = true;
    gtm.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + url;
    var s = document.getElementsByTagName('body')[0];
    s.parentNode.insertBefore(gtm, s);
})();
</script>

它几乎与Google分析脚本代码段相同。现在,脚本将附加在body标记之前。我不确定是否使用jQuery方法insertAfter是正确的方法,或者是否有更好的方法!

感谢您的帮助。

6 个答案:

答案 0 :(得分:4)

实际上,您的代码会在scripthead标记之间插入body。请改用:

var s = document.body.firstChild;
s.parentNode.insertBefore(gtm, s);

答案 1 :(得分:1)

您可以使用Node.insertBefore

var body = document.getElementsByTagName("body")[0];
body.insertBefore(gtm, body.firstChild);

即使正文标记没有firstChild,也可以使用。

答案 2 :(得分:0)

我想你可以尝试一下 - appendChild

 document.getElementsByTagName("body")[0].appendChild(gtm);

答案 3 :(得分:0)

试试这个:

var script = 'The script content here'; // Add your JS as a string,
var url    = 'path/to/js/file';         // Or link to the file.
var scriptNode = document.createElement('script');       // Create a script Element
scriptnode.setAttribute('type', "text/javascript");      // Set the Element's `type` attribute.
// Either:
scriptNode.appendChild(document.createTextNode(script)); // Add the text to the script Element.
// Or:
scriptNode.setAttribute('src', url);                     // Link to the script
// Place the script Element before the first child of the body.
document.body.insertBefore(scriptNode , document.body.firstChild);

所以,基本上,使用insertBefore

答案 4 :(得分:0)

如果您正在使用jQuery,则可以使用.prepend()

(function () {
    var url = "path/to/js/file";
    var gtm = document.createElement('script');
    gtm.type = 'text/javascript';
    gtm.async = true;
    gtm.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + url;
    $('body').prepend(gtm);
})();

答案 5 :(得分:0)

你的body标签中是否有一个元素作为第一个元素,并在它之前附加脚本。使用yourFirstElementIdfromBodyTag.before(here is your appended code goes) ..

例如

<body>
<your first element> like <input type="hidden" id="hidA" />
//rest code goes here
</body>

现在建议使用$('#hidA').before('the script code')。我确信它会在<body>之后附加脚本。