Я уверен, что за «раздувание» проголосуют, но просто поделюсь, как бы я это сделал:
Сначала я определю такую функцию, которая будет очень расширяемой:
function addElements(objlist) {
// One or many
objlist = [].concat(objlist);
while(objlist.length > 0) {
var current = objlist.pop();
var node = document.createElement(current.element || 'div');
for(attr in current.attributes)
node.setAttribute(attr, current.attributes[attr]);
if(current.parent)
current.parent.appandChild(node);
}
}
Затем, чтобы использовать его:
addElements([
{
parent: document.documentElement.firstChild,
element: 'script',
attributes: {
src: 'http://example.com/jquery.1.3.2.js'
}
},
{
parent: document.documentElement.firstChild,
element: 'script',
attributes: {
src: 'http://example.com/jquery.alphanumeric.js'
}
},
{
parent: document.documentElement.firstChild,
element: 'script',
attributes: {
src: 'http://example.com/common.js'
}
},
{
parent: document.documentElement.firstChild,
element: 'script',
attributes: {
src: ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js',
async: true
}
}
]);
Это то, что я называю «силовыми функциями». Он хорошо читается, и, несмотря на повторение, он выражен силой.
Вы даже можете автоматизировать создание объекта:
var elements = [
'jquery.1.3.2.js',
'jquery.alphanumeric.js',
'common.js',
('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'
];
for(var i=0; i<4; ++i) {
elements[i] = {
element: 'script',
parent: document.documentElement.firstChild,
attributes: {
src: 'http://example.com/' + elements[i]
}
};
}
elements[3].attributes.async = true;
addElements(elements);