gpt4 book ai didi

JavaScript appendChild() 带有 href 会使浏览器崩溃

转载 作者:行者123 更新时间:2023-11-28 10:59:10 24 4
gpt4 key购买 nike

我有这个对象和一些方法,它们创建了一个新的

<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 的链接 - 最终导致浏览器崩溃。

最佳答案

无法重现错误:

http://jsfiddle.net/ENXwY/

所以,问题可能出在您的 thisActualUrl 参数

关于JavaScript appendChild() 带有 href 会使浏览器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11108308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com