All you need to do is to create a html element, set your string as it's innerHTML and use standard DOM methods on it - there's still nothing added to the DOM at any time:
var el = document.createElement('html');
el.innerHTML = '<script src="a" integrity="b" crossorigin="c" exclude="d"><//script>';
console.log(el.getElementsByTagName('script')[0].attributes)
To get the attribute names and values, use the following (note that below uses es6):
var el = document.createElement('html');
el.innerHTML = '<script src="a" integrity="b" crossorigin="c" exclude="d"><//script>';
var attrs = Array.from(el.getElementsByTagName('script')[0].attributes);
for (let attr of attrs) {
console.log(attr.name + "=" + attr.value);
}
ES5 equivalent would be:
Array.prototype.forEach.call(el.getElementsByTagName('script')[0].attributes, function(e) {
console.log(e.name + " = " + e.value);
});
To get the object you asked for, you can use the following:
var el = document.createElement('html');
el.innerHTML = '<script src="a" integrity="b" crossorigin="c" exclude="d"><//script>';
var obj = Array.from(el.getElementsByTagName('script')[0].attributes).reduce((a,b) => {
a[b.name] = b.value;
return a;
}, {});
console.log(obj);