标签: script-tag

为什么要调用$ .getScript而不是直接使用<script>标记?

我不明白替换这个的原因:

<script src="js/example.js"></script>
Run Code Online (Sandbox Code Playgroud)

有了这个:

$.getScript('js/example.js', function() {
  alert('Load was performed.');
});
Run Code Online (Sandbox Code Playgroud)

有没有特别的理由使用jQuery版本?

javascript jquery script-tag getscript

7
推荐指数
3
解决办法
5599
查看次数

如何包含包含coldfusion代码的外部javascript文件?

我有一些使用相同的javascript代码的coldfusion文件.我想将javascript分成一个.js文件并将其包含在每个文件中,这样我就不必多次重复所有内容.所以,我将javascript代码分成了一个名为"myPage.js"的文件,而在"myPage.cfm"中我添加了一个脚本标记 -

<script language="javascript" src="myPage.js"></script>
Run Code Online (Sandbox Code Playgroud)

问题是在javascript之间传播了一些使用<cfoutput>s等注入值的冷却代码,并且不再正确翻译,可能是因为它试图将其作为纯javascript读取.有没有办法我可以有一个外部的js文件,但表明我希望它使用coldfusion来解释它?

我找到的一个解决方法是将javascript放入coldfusion文件而不是javascript文件,称为"myPageJavascript.cfm",包围<script type="text/javascript">标签中的所有javascript代码,然后使用cfinclude将javascript包含在所有页面.这样可以正常工作,但在我看来并不像包含js文件一样直观......对于这样的情况,标准做法是什么?有没有办法将其作为外部js文件实现,还是应该坚持我的coldfusion模板文件?

javascript coldfusion script-tag

7
推荐指数
2
解决办法
8061
查看次数

为什么当我动态加载脚本时,firefox随机停止加载标签脚本?

为什么Firefox随机停止加载<script>用js动态添加的标签?
在这张图片上,我动态加载这些脚本,然后将它们添加到dom中

  • "/assets/js/lib/socket.io-1.3.6.js"
  • "/assets/js/lib/tweenmax.min.js"
  • "/assets/js/lib.js"
  • "/assets/js/module.js"
  • "/资产/ JS /模块"

相当随机,结果就是这样,动态加载的随机脚本和其他脚本(7-15s之间)之间存在很大的滞后

显示时间线装载ressources的萤火虫Pic

我实际上加载了我的脚本

function(url, callback){
    var elem = document.createElement("script");
    elem.async = true;
    elem.src = url;
    elem.type = "text/javascript";
    elem.onload = callback;
    document.getElementsByTagName("body")[0].appendChild(elem);
}
Run Code Online (Sandbox Code Playgroud)

编辑:
当我在我的html页面中添加脚本标签时,滞后不会出现,它只会在我用JavaScript加载脚本时出现.但实际上我需要用JavaScript加载这些脚本.

有一个小 提示的错误https://jsfiddle.net/ccgb0hqr/如果警报显示立即刷新页面,直到错误发生

javascript browser firefox loading script-tag

7
推荐指数
1
解决办法
479
查看次数

在体内异步加载的JS使浏览器处于"加载"模式

我正在我的</body>标签之前从外部源加载一些JS .我正在尝试看看如果服务器在尝试服务这个第三方JS时挂起会发生什么.似乎我页面上的所有内容都运行良好,但浏览器仍然在旋转,就像页面仍在加载一样.有没有办法以这样的方式加载这个JavaScript,浏览器不会等待它声明页面完全加载?

作为参考,我尝试了以下两种方法来异步加载我的JS:

<script>
  var resource = document.createElement('script');
  resource.src = "https://myserver.com/js/myjs.js”;
  var script = document.getElementsByTagName('script')[0];
  script.parentNode.insertBefore(resource, script);
</script>
Run Code Online (Sandbox Code Playgroud)

<script async src="https://myserver.com/js/myjs.js"></script>
Run Code Online (Sandbox Code Playgroud)

html javascript asynchronous script-tag

7
推荐指数
1
解决办法
335
查看次数

Content-Script-Type和Content-Style-Type的重点是什么?

考虑以下两行:

<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
Run Code Online (Sandbox Code Playgroud)

从W3关于脚本的文档中,在默认脚本语言部分中:

作者应通过在HEAD中包含以下META声明来为文档中的所有脚本指定默认脚本语言

然而,它继续在脚本语言的本地声明中说:

必须为文档中的每个SCRIPT元素实例指定type属性.SCRIPT元素的type属性的值将覆盖该元素的默认脚本语言.

在我看来,这里有一个过度规范.为什么meta和每script类中声明?如果我们"必须"单独声明每个标签,那么强制性默认的重点是什么?

要么让默认的默认的,或者只是指出,每个标签需要它自己的类型-或者是使用的措辞这里只是让我绊倒了?同样的语言也用于参考样式表.

html w3c specifications stylesheet script-tag

6
推荐指数
1
解决办法
840
查看次数

使用纯javascript正确地将defer属性添加到脚本标记

所以我尝试添加这样的延迟脚本标签

const script = document.createElement('script');
  script.setAttribute('src', '/script.js');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('defer', true);//this is the code in question!
  document.getElementsByTagName('body')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)

但是我发现结果脚本标签会生成defer属性,defer=true而不仅仅是defer.

它们是一样的吗?什么是暗示,如果我做的defer=true,而不是defer

谢谢!

javascript script-tag setattribute deferred-loading

6
推荐指数
1
解决办法
5697
查看次数

如果我们假设所有 Web 浏览器都理解 &lt;script&gt; defer 属性,那么将链接的脚本与 defer 一起放在头部是否更好?

如果我们比较网页和链接的 JavaScript 文件的这两个选项:

  1. 将所有内容放在<script src="...">网页末尾,而不是
  2. 将它们放在该<head>部分但使用<script defer src="...">

如果怎样的机制defer的工作原理是在本页面描述的这个其他页面在Mozilla,而defer在几乎所有的现代浏览器都支持,那么是不是它只是更好地利用选项#2以上?

原因是,选项 1 和 2 的工作方式完全相同,除了选项 #2,JavaScript 文件的下载可以与 HTML 文件的解析(和呈现)并行。所以如果下载时间是0.2s或0.5s,这个时间就可以省了。如果 JS 向页面添加元素或启动页面中的任何动态或交互元素,则这对于 SPA(单页应用程序)或旧式网页来说是正确的。

唯一的例外是,如果浏览器足够聪明,在解析上述选项 1 中的整个 HTML 文件之前,它已经“收集”了所有 JS 文件 URL 并在 HTML 文件解析到最后或到<script>标签的点。但这将使选项 1 和 2 的工作完全相同,因此对于不这样做的浏览器,选项 2 仍然会更快?

PS话虽如此,我认为有一个问题:由于HTTP / 1.1规范建议浏览器一次最多从同一主机名下载2个项目,因此如果正在下载JS文件并占用一个位置,则一些图像文件可以更慢地到达。(如果 JS 和图像来自相同的主机名)

javascript script-tag web-performance

6
推荐指数
1
解决办法
153
查看次数

通过 &lt;script src=""&gt; 加载 JavaScript ES6 模块并在 &lt;script&gt; 标签中导入所有导出是否相同?

无法理解我刚刚在关于deno bundle命令的 Deno 手册部分末尾阅读的两个示例之间的区别:

捆绑包也可以在 Web 浏览器中加载。bundle 是一个自包含的 ES 模块,所以 type 属性必须设置为“module”。例如:

<script type="module" src="website.bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)

或者您可以将其导入另一个 ES 模块以使用:

<script type="module">
  import * as website from "website.bundle.js";
</script>
Run Code Online (Sandbox Code Playgroud)

我的印象是这两种形式都达到了相同的效果(即“在浏览器继续解析页面之前立即获取并执行”),而后者用于跟随脚本或想要缩小导入的范围(例如,如本答案所示)。


这可能被认为是其他问题的重复(见列表底部),但这些答案对我没有多大帮助,而且辅助资料似乎也没有表明我的假设是否正确。(另一方面,我很有可能忽略了一些明显的东西,并且不得不提高我的阅读理解能力......)

javascript script-tag es6-modules deno

6
推荐指数
1
解决办法
188
查看次数

&lt;script&gt; 标签不是同源策略的一部分的原因/背景是什么

最近几个月我读了很多关于浏览器和跨域请求的同源策略。

我一直在想,为什么<script>标签不是它的一部分?我发现这个问题被问了好几次,也在 stackoverflow 上,但所有的回复都没有回答为什么它不是它的一部分。

这是由于历史原因还是这种想法背后的背景是什么?

我希望有人可以帮助我解决这个问题。

javascript ajax cross-domain script-tag same-origin-policy

5
推荐指数
1
解决办法
386
查看次数

为不同的组件加载不同的JS库文件

我有一个用 ReactJS 制作的网站。在 中public/index.html,我有

<head>
  <script src="/lib/analyzejs-v1.js"></script>
  <script src="/lib/analyzejs-v2.js"></script>
</head>
<body>
  <div id="root"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

其中analyzejs-v1.js有 6Mo,并且analyzejs-v2.js有 3Mo;它们都是固定文件,我无法对其进行太多修改。

这两个文件不是模块;它们的功能已声明(例如,declare function f1(address: string): string;在 中src/defines/analyzejs-v1.d.ts)。analyzejs-v1.js因此,某些组件通过使用函数名称直接调用函数f1(...),无需任何命名空间、导入或导出。其余组件analyzejs-v2.js通过使用函数名称f2(...)直接调用函数,无需任何命名空间、导入或导出。

加载这两个js库文件需要时间。所以我正在寻找一种方法来加载analyzejs-v1.jsanalyzejs-v2.js根据组件(或 URL)。

那么有谁知道为不同组件加载不同JS库文件的常规方法吗?

script-tag hamlet reactjs webpack react-scripts

5
推荐指数
1
解决办法
763
查看次数