JavaScriptタグのdata-xxx属性値を解析する(Scriptタグ上の属性を解析する)
5264 ワード
JavaScriptでは外のjsや埋め込みjsを導入するのが普通です.scriptタグを書くことによって実現されます.
例えば:
使用者がscriptタグを定義する時、一つのidを定義して実現することを規定しています.
方法二:
httml 5の新特性dataset属性により実現しました.
https://html5demos.com/dataset/
https://www.w3schools.com/tags/att_global_data.asp
<script type="text/javascript">
console.log(1-2);
script>
//
<script src="//a.com/tools.min.js">script>
外部のjsを導入する時、部分コードは動的に値を決めたり、設定を指定したりして、異なる効果を実現する必要があります.例えば:
"//a.com/tools.min.js"</span> <span class="hljs-typedef"><span class="hljs-keyword">data</span>-<span class="hljs-keyword">type</span>="open">
// tools.min.js data-type
方法1:使用者がscriptタグを定義する時、一つのidを定義して実現することを規定しています.
var dom = document.getElementById("xx");
var val = dom.getAttribute("xxx");
しかし、このような制限が大きいので、この方法は勧められません.方法二:
httml 5の新特性dataset属性により実現しました.
<html>
<head>
<title> JavaScript data-xxx title>
<meta charset="utf-8" />
head>
<body>
body>
<script data-type="11" data-json='{"a":"a","b":1}' data-aaa-bbb="aaa" type="text/javascript">
/**
* script
* @param {Object} window
*/
function currentScript(window) {
var document = window.document;
return document.currentScript || (function() {
var scripts = document.getElementsByTagName("script");
return scripts[scripts.length - 1];
})();
}
/**
* data attr
* @param {Object} tag
*/
function parseDataAttr(tag) {
var options = {};
for(var opt in tag.dataset) {
if(tag.dataset.hasOwnProperty(opt)) {
try {
options[opt] = JSON.parse(tag.dataset[opt]);
} catch(_) {
options[opt] = tag.dataset[opt];
}
}
}
return options;
}
//
var opt = parseDataAttr(currentScript(window));
console.log(opt)
script>
html>
ブラウザがdatasetをサポートしているかどうかを判断する方法:https://html5demos.com/dataset/
https://www.w3schools.com/tags/att_global_data.asp