<script>执行A function(){<script src='b'></script>} </script>这样的做法可行吗?
时间: 2024-11-02 08:03:49 浏览: 4
这种做法是不可行的。`<script>` 标签是用来引入外部脚本文件或执行客户端脚本的,而在这里,它尝试嵌套在另一个`<script>`标签内部,并试图在运行A函数时再异步加载B脚本。浏览器会按照文档的顺序解析HTML,遇到第一个`<script>`就会开始下载并执行其内容,所以当你尝试在`<script>A function()...</script>` 中包含第二个`<script>`时,B脚本会在A函数之前下载,而不是在其执行之后。
正确的做法应该是将两个脚本分开,先定义A函数,然后再单独引入B脚本,或者在A函数中添加对B脚本加载完成的回调,确保依赖项就绪后再执行相关的代码。例如:
```html
<script>
function A() {
// 先定义A函数的逻辑
// 当B脚本加载完成后执行某些操作
if (typeof B === 'function') {
B();
} else {
// 如果B尚未加载,可以使用window.onload或者其他事件处理程序
window.addEventListener('DOMContentLoaded', function () {
if (typeof B === 'function') {
B();
}
});
}
}
</script>
<script src='b.js'></script>
```
或者
```html
<script>
function loadScript(src, callback) {
var script = document.createElement('script');
script.src = src;
script.onload = callback;
document.head.appendChild(script);
}
function A() {
// A函数的逻辑
}
loadScript('b.js', function() {
A(); // 在B脚本加载完成后执行A
});
</script>
```
阅读全文