gpt4 book ai didi

javascript - 更改解释脚本标签的默认浏览器行为

转载 作者:行者123 更新时间:2023-11-30 10:21:35 25 4
gpt4 key购买 nike

我们都知道什么<script src="/something.js"></script>做。该文件加载到页面中并运行脚本。

有什么方法可以覆盖解释 <script> 的默认行为吗?元素?

我想要相同的语法 ( <script src='...'></script> ),它只会从 something.js 中获取代码(可能通过 XHR/jQuery ajax)并将其传递给 foo (...) {...}功能。然后我会关心我会用它做什么。

澄清问题:

我可以很容易地创建一个伪 <script>标记替代使用:

<div data-script-src="/1.js"></div>
<div data-script-src="/2.js"></div>
<div data-script-src="/3.js"></div>
<div data-script-src="/4.js"></div>

然后在 js 端我会做:

var $scripts = $("[data-script-src]")
, scriptContents = [];
(function loadInOrder (i) {
if (!$scripts[i]) { alert("Loaded"); }
$.ajax($($scripts[i]).attr("data-script-src"), function (data) {
scriptContents[i] = data;
loadInOrder(++i);
});
})(0);

但是我怎样才能替换div[data-script]<script> ?我怎样才能强制浏览器NOT加载<script>具有属性 data-load="false" 的标签, 例如?

最佳答案

我认为你最好的选择是使用 onbeforescriptexecute .此事件在脚本执行之前触发,因此您可以将 type 属性修改为 text/javascript 以外的其他内容(从而告诉浏览器不执行内容)。这仍将加载来自服务器的数据。

不幸的是,onbeforescriptexecute 仅在 FF/Opera 中受支持。

例子:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script>
document.addEventListener("beforescriptexecute", function (e) {
console.log(e.target.innerHTML || e.target.src);
}, true);
</script>
<script>
console.log("12");
</script>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
</head>
<body>
Hi
</body>
</html>

控制台输出将是:

'console.log("12")'
'http://code.jquery.com/jquery-1.10.2.min.js'

关于javascript - 更改解释脚本标签的默认浏览器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21313311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com