我有一个大的,只要单击它,它就会显示.json-文件中的随机文本。现在,有时文本包含链接,这些链接设置为在新选项卡中打开。效果很好!
但是,当打开一个新选项卡时,我不想让onclick函数执行。就像用户通过右键单击并在新选项卡中打开链接来打开链接一样。
使用纯JavaScript可以吗?我包括了selectPodcast-函数,用于显示链接的生成方式。
在我看来:我已经进行了很长时间的编程,所以我很想知道我的代码对于有经验的程序员是什么样的。我以为这有点可爱,就像一个孩子开始造句子时:-)
我试图添加a.onclick =“ return false;”;到selectPodcast-函数,但这没用。
function getPodcast() {
var url = "json/podcasts.json";
var request = new XMLHttpRequest();
request.open("GET", url);
request.onload = function() {
if (request.status == 200) {
selectPodcast(request.responseText);
}
};
request.send(null);
};
function selectPodcast(responseText) {
var items = JSON.parse(responseText);
var choice = [Math.floor(Math.random() * items.length)];
var title = items[choice].title;
var link = items[choice].link;
var description = items[choice].description;
var a = document.createElement("a");
var br = document.createElement("br");
var p = document.createElement("p");
a.href = link;
a.target = "_blank";
a.innerHTML = title;
p.innerHTML = description;
var div = document.getElementById("podcast");
div.innerHTML = "";
div.appendChild(a);
div.appendChild(br);
div.appendChild(p);
};
答案 0 :(得分:0)
如果这是您想要的,则可以通过传递<a></a>
作为回调函数参数来检查目标是否为e
标签(链接),该参数包含诸如位置,目标,偏移位置等点击事件信息。
instanceof
关键字检查对象是否为HTMLAnchorElement的实例。
function onclick(e){
if(e.target instanceof HTMLAnchorElement) return console.log('Link');
//body
console.log('Not a link');
}
test.onclick = onclick;
<div id='test'>Some text <a href='#some_link'>Some link</a></div>