このオブジェクトにはいくつかのメソッドがあり、新しいものを作成します
<li><a href="?">http://www.domain.com</a></li>
ページのコンテンツ内で見つかった各リンクに対して、以前に生成された
<ul id="container"></ul>
外観は次のとおりです。
var linkObject = {
parseUrl : function(url) {
"use strict";
var thisATag = document.createElement('a');
thisATag.href = url;
var thisHostName = thisATag.hostname;
return thisHostName;
},
displayLinkContainer : function() {
"use strict";
var thisWrapper = document.getElementById("contentWrapper");
var thisDiv = document.createElement("div");
thisDiv.setAttribute('id', 'wrapper');
thisWrapper.appendChild(thisDiv);
var thisHeading = document.createElement("h2");
var thisHeadingTextNode = document.createTextNode("The list of links");
thisHeading.appendChild(thisHeadingTextNode);
thisDiv.appendChild(thisHeading);
var thisUl = document.createElement("ul");
thisUl.setAttribute('id', 'container');
thisDiv.appendChild(thisUl);
},
displayLink : function(thisLink, thisActualUrl) {
"use strict";
var thisContainer = document.getElementById('container');
var thisLiTag = document.createElement('li');
var thisATag = document.createElement('a');
thisATag.setAttribute('target', '_blank');
thisATag.setAttribute('href', encodeURI(thisActualUrl));
var thisTextNode = document.createTextNode(thisLink);
thisATag.appendChild(thisTextNode);
thisLiTag.appendChild(thisATag);
thisContainer.appendChild(thisLiTag);
},
findLinks : function() {
"use strict";
var thisHrefs = [];
var thisLinks = document.getElementsByTagName('a');
if (thisLinks.length > 0) {
for (var i = 0; i < thisLinks.length; i++) {
var thisAHref = thisLinks[i].getAttribute('href');
if (thisAHref !== '#') {
var thisAUrl = linkObject.parseUrl(thisAHref);
thisHrefs.push(thisAUrl);
linkObject.displayLink(thisAUrl, thisAHref);
}
}
}
}
};
linkObject.findLinks();
html :
<div id="contentWrapper"><a href="http://www.google.co.uk/">Google</a> <a href="http://yahoo.com">Yahoo</a></div>
タグ要素の作成を削除すると正常に<a>
動作しますが、そのまま実行するとブラウザがスタックしてクラッシュします。私は何が間違っているのですか?
いくつかのデバッグの後、問題はthisActualUrlにあることがわかりました。コメントして、次のようにハッシュだけに置き換えたときのようです。
thisATag.setAttribute('href', '#' /* encodeURI(thisActualUrl) */);
コードは正常に実行されますが、thisActualUrl で実行すると、ページで見つかったリンクが表示され、現在のページの URL へのリンクが長いループで表示され、最終的にブラウザーがクラッシュします。