📅  最后修改于: 2023-12-03 15:39:15.664000             🧑  作者: Mango
在Web开发中,我们经常需要通过脚本标签来引入JS代码。但有时候需要给JS代码传递参数,这个时候就需要学会将参数传递给脚本标签。
我们可以通过给脚本标签添加属性来传递参数。常见的属性有data-*
和id
。
以data-*
属性为例,我们可以这样定义脚本标签:
<script src="yourScript.js" data-param1="value1" data-param2="value2"></script>
在JS代码中,可以通过dataset
属性获取到这些参数:
var param1 = document.currentScript.dataset.param1;
var param2 = document.currentScript.dataset.param2;
如果我们通过id
属性定义脚本标签,可以这样获取参数:
<script src="yourScript.js" id="yourScript" param1="value1" param2="value2"></script>
var scriptTag = document.getElementById('yourScript');
var param1 = scriptTag.getAttribute('param1');
var param2 = scriptTag.getAttribute('param2');
如果需要传递一个JSON
格式的参数,我们可以将参数序列化成字符串后通过data-*
或id
属性传递。
var params = {foo: 'bar', age: 18};
var paramsStr = JSON.stringify(params);
通过data-*
属性传递:
<script src="yourScript.js" data-params='{"foo":"bar", "age": 18}'></script>
var params = JSON.parse(document.currentScript.dataset.params);
通过id
属性传递:
<script src="yourScript.js" id="yourScript" params='{"foo":"bar", "age": 18}'></script>
var scriptTag = document.getElementById('yourScript');
var params = JSON.parse(scriptTag.getAttribute('params'));
JSON
格式的数据,请务必将其序列化后再传递。IE
浏览器中,可能会出现dataset
属性获取不到data-*
属性值的情况,此时可以通过getAttribute
来获取。