Javascript 内部或外部链接
我的链接有一个小问题。我试图让它这样,当一个链接被检查,它使用javascript来处理页面加载,这是好的,但在它加载页面之前,我希望它采取它传递给javascript的URL,并检查它是否是外部的,如果是,然后通知他们,否则继续。。。以下是我目前掌握的代码: JavaScript文档:Javascript 内部或外部链接,javascript,html,Javascript,Html,我的链接有一个小问题。我试图让它这样,当一个链接被检查,它使用javascript来处理页面加载,这是好的,但在它加载页面之前,我希望它采取它传递给javascript的URL,并检查它是否是外部的,如果是,然后通知他们,否则继续。。。以下是我目前掌握的代码: JavaScript文档: function loadPage(page, tag, ext) { if (tag) { fadeOut(tag); setTimeout(function() {
function loadPage(page, tag, ext) {
if (tag) {
fadeOut(tag);
setTimeout(function() {
if (page) {
console.log('Attempting To Buffer Next Page...');
} else {
console.log('ERROR: No Page To Buffer');
return;
}
if (ext) {
console.log('Loading Custom Extension');
if (checkExternal(page) == true) {
window.location = "external.php?url="+page+"."+ext
}
else {
window.location = page+"."+ext
};
} else {
console.log("No Custom Extension, Using .hmtl");
if (checkExternal(page) == true) {
window.location = "external.php?url="+page+".html"
} else {
window.location = page+".html"
};
}
}, 500);
}
else
{
console.log("ERROR: Tag Field Empty, Cannot Load Page")
};
};
Html链接:
<a onclick="loadPage('https://github.com/hbomb79/securitySystemPro/issues', 'body');" class="url">GitHub</a>
GitHub
我在这里尝试了其他结果,但它们都检查了href属性,我需要检查传递给函数的URL,如果函数是外部的,则返回true
有人有什么想法吗?通过比较单击事件的
.hostname
和位置。hostname
可以轻松检查链接是否仍然是本地链接
在下面的代码中,我将应用一个。单击事件到类链接
:这意味着许多元素可以使用链接
类来包括在事件处理中
我个人认为最好使用这种方法,因为它不需要更改主HTML文档。也就是说,您可以始终使用onclick=“function()”
并获得相同的结果
$(“.link”)。单击(
职能(e){
if(e.target.hostname==location.hostname){
console.log(“转到本地”)
返回true;
}否则(确认(“您是否同意离开本网站?”){
控制台日志(“离开网站”);
返回true;
}否则{
console.log(“留在这里”);
返回false;
}
});代码>
什么是淡出(tag)?这是一个淡出使用jQuery指定的标记的函数,因此我基本上会将body标记传递给它,使其淡出:我的网站是您可以看到这一效果的地方。为什么-1?我做错什么了吗?嗯,在我当前的代码中,我使用了一个onclick事件,它传递页面的URL,我如何检查它是否是外部的。。。它是这样的:函数checkExternal(url){if(url.target.hostname==location.hostname){console.log(“转到本地”)返回true;}else if(确认(“你愿意离开这个网站吗?”){console.log(“离开网站”);返回true;}else{console.log(“留在这里”);返回false;}})
然后从主问题中的函数调用它-顺便说一句,第二个链接也要求确认,即使它是本地的……如果你想手动传入url,你需要一个看起来很难看的正则表达式来解析主机名。事件处理程序会自动执行此操作,从而创建target.hostname
,因此这是使用Jquery xp的另一个原因。这里的第二个答案解释了如果您确实不想使用Jquery,如何解析url:我删除了第二个链接:我忘了代码片段实际上并不托管在stackoverflow.com上。