Javascript href未链接到外部url

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

我下载了一个设计非常奇怪的单页模板。所有超链接都链接到页面上的部分,并且它使用的是data link=“”参数

现在我尝试将其中一个菜单项链接到目标为空的外部url,但它正在查找我在页面本身上定义的url(因此它正在查找不存在的部分,例如www.example.com/)

链接在href元素上具有如下值:

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容器。请尝试此
  • “title=”Order Now“数据链接=”现在
  • IDK没有看到代码,但模板可能有一个脚本,捕获所有链接上的所有单击事件,并在事件上使用preventdefault来切换数据链接的值,以执行某种类型的滚动行为。例如,我找到了处理HREF的代码。请参阅编辑的postOk。我将尝试感谢,顺便说一句,我找到了处理请求的代码是的,我找到了请求处理程序
    $(".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();
        }
    ...