【问题标题】:Is document write the preferred way to write html to a third party site for corporate branding? [closed]文档写入是将 html 写入第三方网站以进行企业品牌推广的首选方式吗? [关闭]
【发布时间】:2015-11-26 00:36:23
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

  • 这个问题要么太宽泛,基于意见,要么引起讨论,因此与 Stack Overflow 无关。如果您有具体的、可回答的编程问题,请提供完整的详细信息。
  • 我知道这是基于意见的,但这不是代码的本质吗?许多不同的方法来实现相同的目标。这个问题看起来也基于意见stackoverflow.com/questions/802854/…
  • 我同意 Paulie_D 的观点,但这是我的两分钱......如果你不在乎会导致什么混乱并且你必须让它“工作”,那么 document.write 是懒惰的首选方式在 10 万多个网站上。 jQuery 可能是一种特殊的混乱,因为您必须添加 jquery 库(很重),并且如果它在站点上加载了它的其他版本(很可能),那么您最终可能会遇到冲突甚至更加混乱。根据我的经验,使用 jQuery 的 document.write 是最糟糕的方法。如果可能的话,在 div 中使用纯 JS。如果没有,请在 iframe 中使用 document.write。
  • @JacobLett 你看到原始问题的年龄了吗? 六年前允许基于意见的问题。从那时起,网站指南/规则发生了很多的变化。

标签: javascript jquery html css branding


【解决方案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>

【讨论】:

  • 谢谢! // Is jQuery here? If not load it if (!window.jQuery) { var jq = document.createElement('script'); jq.type = 'text/javascript'; // Path to jquery.js file, eg. Google hosted version jq.src = '//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'; document.getElementsByTagName('head')[0].appendChild(jq); } // JS - Load plugins var myScript1 = document.createElement('script'); myScript1.setAttribute('src', 'includes/plugins.js'); myScript1.setAttribute('type', 'text/javascript'); document.getElementsByTagName('body')[0].appendChild( myScript1 );
  • 请注意,myScript1 的 src 必须是完整的 URL、域和所有内容,否则它不会加载到您的第 3 方网站上,因为该相对路径可能不存在。跨度>
  • 好的,谢谢。你让我免于看起来像个傻瓜。
【解决方案2】:

我不会为此使用 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 文件中设置触发器,而无需在每次调用时都清除文档。冲洗、清洗并重复其他元素。

【讨论】:

  • 嗨,兰迪,感谢您的回复。我将您的答案与 Quantastical 相结合,得到了我的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2023-01-07
相关资源
最近更新 更多