-1

我有一个现有的页眉和页脚导航,我想将其应用于各种平台上的第三方应用程序和网站。

理想情况下,我想指示供应商在文档的 HEAD 中添加一个脚本标签,然后使用 javascript 执行以下操作:

  1. 将样式表添加到文档头部
  2. 在结束正文标记之前添加脚本标记(jquery 和其他库以及 app.js)
  3. app.js 将在打开 body 标记和其他 dom 操作(添加类、删除元素等)之后依赖 jQuery 加载导航 html

我在回顾了这个讨论之后——文档是在给第三方的初始脚本标签中写最好的解决方案吗?

谢谢你。

4

2 回答 2

1

您不需要document.write();为了将代码注入头部。如果他们将您的远程 JavaScript 文件嵌入到他们的页面中,那么您应该能够将脚本/样式元素附加到头部。

 var myScript = document.createElement('script');
 myScript.setAttribute('src', '...');
 myScript.setAttribute('type', 'text/javascript');
 document.getElementsByTagName('head')[0].appendChild( myScript );

如果您查看 Google Analytics 嵌入代码,您会发现一些相似之处。它足够短,您应该能够弄清楚发生了什么:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', '...', 'auto');
  ga('send', 'pageview');

</script>
于 2015-11-25T16:24:07.893 回答
1

我不会为此使用 document.write,因为在加载窗口后调用此方法时,它会清除所有内容,除了您刚刚写入文档的内容。

相反,我会使用 document.createElement() 创建标签,然后使用 appendChild() 将 js 文件或元素添加到元素中,然后添加到文档中。

var script1 = document.createElement("script");
var script1File = document.createTextNode(myfilepath.js);
script1.appendChild(script1File);
document.body.appendChild(script1);

这应该将脚本添加到正文的底部。这样,可以在 JS 文件中设置触发器,而无需在每次调用时都清除文档。冲洗、清洗并重复其他元素。

于 2015-11-25T16:36:23.293 回答