文件写入是将 html 写入第三方网站以实现企业品牌的首选方式吗?

Is document write the preferred way to write html to a third party site for corporate branding?

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

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

  1. 将样式表添加到文档头部
  2. 在结束正文标签之前添加脚本标签(jquery 和其他库以及一个 app.js)
  3. 然后 app.js 将依靠 jQuery 在开始正文标记和其他 dom 操作(添加 类、删除元素等)

我在reviewing this discussion之后-文档写在给第三方的初始脚本标签中是最好的解决方案吗?

谢谢。

您无需 document.write(); 即可将代码注入头部。如果他们将您的远程 JavaScript 文件嵌入到他们页面的任何位置,您应该能够将 script/style 元素附加到头部。

 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>

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

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

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

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