【问题标题】:adding a script tag dynamically with document.write使用 document.write 动态添加脚本标签
【发布时间】:2014-07-09 05:43:55
【问题描述】:

我不知道这是否是个好主意,但我正在尝试在我的 HTML 文档中使用 document.write 添加一个脚本,该脚本只有在浏览器在线时才会添加一个脚本。

<script>
var online = navigator.onLine;
if(online){
  document.write("<script src='./api.js'></script>");
}
</script>

问题是浏览器在 document.write 函数内的第一个关闭 &lt;/script&gt; 标记处停止,导致其他所有内容都被解释为 HTML("); 出现在 html 中),我知道我我做错了什么,但想知道是什么

【问题讨论】:

  • 请注意,navigator.onLine wither 的返回值 true 或 false 不会明确地让您知道 wither 用户是否有活动的互联网连接。
  • 这不是一个面向公众的应用程序,它是一个独立的应用程序,我将在画廊中使用 chrome 在屏幕上展示它,因此外部用户和浏览器回退已被忽略

标签: javascript html


【解决方案1】:

试试这个:

document.write("<script src='./api'></"+"script>");

你是对的。浏览器读取所有 &lt;script&gt; ... &lt;/script&gt; 块并将它们传递给 JS 引擎。所以,如果你想写&lt;/script&gt;,你应该打破它。

注意使用 document.write 将 JavaScript 添加到文档不是一个好主意。

【讨论】:

  • 它有效。谢谢。这可能不是一个好主意,但对于包含页脚页面的快速修复,效果很好。
【解决方案2】:

编辑:请看这个帖子和答案:https://stackoverflow.com/a/8024286/2192152

这是我用于个人网站的代码:

/* *************************************************************
 *  Loading any js file.
 ************************************************************** */
staticPath ='./js/';
vendorPath='./js/vendor/';

src = [
    {f:'jquery-1.8.3.min.js', n:1},
    {f:'jquery-ui-1.9.2.js', n:1},
    {f:'lib.js', n:0},        
];


for (var i in src)
{
    if (src[i].n === 0) document.write('<' + 'script type="text/javascript" src="' + staticPath + src[i].f + '"></sc' + 'ript>');
    else  document.write('<' + 'script type="text/javascript" src="' + vendorPath + src[i].f + '"></sc' + 'ript>');
}

如您所见,您应该拆分包含脚本调用的字符串。不幸的是,我不知道为什么需要这样做。

注意:我尝试了很多设置,我在这里为您提供的设置是加载时间最快的设置(使用 chrome)

【讨论】:

【解决方案3】:

你可以试试:

var script = document.createElement("script");
script.type = "text/javascript";
script.src = "./api.js";
document.head.appendChild(script);

您还缺少 api 扩展吗?应该是api.js吗?

【讨论】:

  • 它以某种方式在没有扩展名的情况下作为 js 文件工作,但添加它会更直观,为了更好地理解,我将编辑我的问题
  • 更改后只需将script.src = "./api"; 行中的api 更改为正确的文件名
猜你喜欢
  • 2022-01-06
  • 2021-06-13
  • 2014-03-10
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
相关资源
最近更新 更多