Javascript href未链接到外部url
我下载了一个设计非常奇怪的单页模板。所有超链接都链接到页面上的部分,并且它使用的是data link=“”参数 现在我尝试将其中一个菜单项链接到目标为空的外部url,但它正在查找我在页面本身上定义的url(因此它正在查找不存在的部分,例如www.example.com/) 链接在href元素上具有如下值:Javascript href未链接到外部url,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我下载了一个设计非常奇怪的单页模板。所有超链接都链接到页面上的部分,并且它使用的是data link=“”参数 现在我尝试将其中一个菜单项链接到目标为空的外部url,但它正在查找我在页面本身上定义的url(因此它正在查找不存在的部分,例如www.example.com/) 链接在href元素上具有如下值: href="/home/" or href="/menu/" <ul id="w1" class="navbar-nav nav"> <li><a id
href="/home/" or href="/menu/"
<ul id="w1" class="navbar-nav nav">
<li><a id="navhome" class="" href="/home" title="Home" data-link="home">Home</a></li>
<li><a id="navmenu" class="" href="/menu" title="Menu" data-link="menu">Menu</a></li>
当我单击该链接时,控制台中出现以下错误:
main.js:109 Uncaught TypeError: Cannot read property 'top' of undefined
at HTMLAnchorElement.<anonymous> (main.js:109)
at HTMLAnchorElement.dispatch (jquery.min.js:3)
at HTMLAnchorElement.r.handle (jquery.min.js:3)
main.js:109未捕获类型错误:无法读取未定义的属性“top”
在兰开夏。(main.js:109)
在htmlanchorement.dispatch(jquery.min.js:3)
位于htmlanchorement.r.handle(jquery.min.js:3)
应该有一段代码捕获所有“a”点击,并阻止它们的默认行为。
删除该数据属性并使用simple href。这应该行得通
如果编码器是如此严格,那么上面的解决方案可能不起作用。然后你应该做一些练习,比如使用div,并在其上附加一个点击处理程序。因此,由于我们不知道你使用的是什么样的模板,你可以使用以下内容:
<ul id="w1" class="navbar-nav nav">
<li><a id="navhome" class="" href="/home" title="Home" data-link="home">Home</a></li>
<li><a onclick="window.open('http://www.google.com', '_blank')">Menu</a></li>
</ul>
- 菜单
这会将您重定向到新选项卡中的另一页。希望这对您有用,这只是一个简单的解决方法。最明显的情况是JavaScript捕获所有链接(可能使用更具体的选择器),阻止默认操作(即跟随链接)并滚动到部分。类似这样的东西,在jQuery中
$("a").each(function(i, el) {
const $el = $(el);
$el.click(function(e) {
const href = $el.attr("href");
// Find an element that has href as an ID
// Scroll to that element
$("html, body").scrollTop($("#" + href).offset().top);
// Prevent default action, i.e., don't follow the hyperlink
// to a new location
e.preventDefault();
});
});
在编辑之后。首先,这是一些不好的JS。但在主题上:如果你想有一些链接来实际打开一个新页面,那么给它们添加一个新类。例如,对外部链接使用类
external
<li><a id="navorder" href="http://order.company.com" target="_blank" class="external">Order Now</a></li>
好的,在这行:
$(".menu ul li a").not('.social-link').click(function(e) {
您可以将类添加到链接(.external link)并从选择中删除:
$(".menu ul li a").not('.social-link').not('.external-link').click(function(e) {
或者您可以更聪明一点,尝试根据href检查链接是否为外部链接(代码只查找http,而不是https):
应该可以正常工作。。。如果没有,您是否可以提供更多代码和上下文删除数据链接属性,因为此属性意味着尝试在当前页面中找到id为homeTry的div容器。请尝试此$(".menu ul li a").not('.social-link, .external').click(function(e) {
$(".menu ul li a").not('.social-link').click(function(e) {
$(".menu ul li a").not('.social-link').not('.external-link').click(function(e) {
$(".menu ul li a").not('.social-link').click(function(e) {
if (e.target.href.indexOf('http://') !== 0) {
e.preventDefault();
}
...