JavaScript Lintでエラーを潰しつつ、出力するHTMLを少し変更した。ちなみに使い方は以下の通り。
function extractBlockquoteCitations() {
var quotes = document.getElementsByTagName('blockquote');
for(var i = 0; i < quotes.length; i++) {
var title = quotes[i].getAttribute('title');
if(title !== null && title !== '') {
var p = document.createElement('p');
p.className = 'title';
quotes[i].appendChild(p);
p.innerHTML = "引用元: "+title+"";
}
else {
var p = document.createElement('p');
p.className = 'title';
quotes[i].appendChild(p);
p.innerHTML = "引用元: ";
}
var cite = quotes[i].getAttribute('cite');
if(cite !== '') {
var a = document.createElement('a');
a.setAttribute('href', cite);
a.setAttribute('title', title);
a.appendChild(document.createTextNode(a));
var p = document.createElement('p');
p.className = 'uri';
p.appendChild(a);
quotes[i].appendChild(p);
}
}
}
function addEvent(obj, evType, fn) {
if(obj.addEventListener) {
obj.addEventListener(evType, fn, false);
return true;
}
else if(obj.attachEvent) {
var r = obj.attachEvent("on"+evType, fn);
return r;
}
else {
return false;
}
}
addEvent(window, 'load', extractBlockquoteCitations);
以上を以下に変更。
function extractBlockquoteCitations() {
var quotes = document.getElementsByTagName('blockquote');
for(var i = 0; i < quotes.length; i++) {
var title = quotes[i].getAttribute('title');
if(title !== null && title !== '') {
var div = document.createElement('div');
quotes[i].appendChild(div);
div.innerHTML = title + "<br />";
}
var cite = quotes[i].getAttribute('cite');
if(cite !== '') {
var a = document.createElement('a');
a.setAttribute('href', cite);
a.appendChild(document.createTextNode(a));
div.className = 'via';
div.appendChild(a);
quotes[i].appendChild(div);
}
}
}
function addEvent(obj, evType, fn) {
if(obj.addEventListener) {
obj.addEventListener(evType, fn, false);
return true;
}
else if(obj.attachEvent) {
var r = obj.attachEvent("on"+evType, fn);
return r;
}
else {
return false;
}
}
addEvent(window, 'load', extractBlockquoteCitations);
「引用元: 」という文字列を「via: 」に変更したのと、出力をJSからではなく、CSSのbefore擬似要素を使うようにした。あと、for(var i = 0; i < quotes.length; i++)
内のelse文を消去した。これだと、対応していない何かに対しては何も出力されないっていう感じであってるのかな。それなら、blockquote要素のtitle属性とかcite属性は元々表示されないから、OK。1,193バイトから948バイトになった。若干出力されるHTMLがスマートになった気がする。