使用HTML脚本标记在源代码时进行编码

Som*_*son 1 html javascript

我注意到<script src="..."></script>标签不允许您在其中使用JavaScript,例如:

<script src="myFile.js">
    alert( "This is a test" );
</script>
Run Code Online (Sandbox Code Playgroud)

这不起作用,也不会在FireBug中引发错误,为什么会发生这种情况,为什么我们必须添加额外的<script>标签以允许在表单上使用JS?

我有一个文件,script/addScript.js从我的root中找到@ ,其中包含:

function addScript( $src )
{
    var script = document.createElement( 'script' );
    script.type = "text/javascript";
    script.src = $src;
    document.getElementsByTagName( 'head' )[0].appendChild( script );
}
Run Code Online (Sandbox Code Playgroud)

这是为了让我能够快速有效地向DOM添加脚本,所以我尝试这样做:

<script src="script/addScript.js">
    addScript( "script/obj.js" );
    addScript( "script/home/login.js" );
</script>
Run Code Online (Sandbox Code Playgroud)

但它不起作用,所以我必须这样做:

<script>
    addScript( "script/obj.js" );
    addScript( "script/home/login.js" );
</script>
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 5

脚本元素加载单个脚本.

它可以做到这一点,无论是从URL或内联,但它仍然加载一个脚本,所以它不能两者都做.

如果您尝试同时执行这两项操作,则将忽略内联脚本:

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

...所以你需要多个脚本元素.

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

值得注意的是,脚本元素的内容仍然存在于DOM中,因此有些人使用它来存储src中的数据,而src所引用的JS将会读取该数据.data-*虽然属性(可以说)是一种更清洁的方法.