【问题标题】:URL fragments and the BASE tagURL 片段和 BASE 标记
【发布时间】:2011-07-21 16:58:07
【问题描述】:

我在应用程序中使用<base> 标签来简化开发。

我知道当锚只是一个 URL 片段时会出现“功能”,因为它会路由到 <base> URL + 片段。

我能做些什么来规避这种情况?我从来没有对 window.location 或 Javascript 中的任何内容进行过修改,与其花点时间研究它,我假设有人知道一个简单粗暴的例子或一个例子。

这可以被规避吗?如果有,请指教。

我讨厌问那些暗示没有尝试过的问题,但我一直在搜索/阅读无济于事

另外;使用 jQuery,因此欢迎任何可以利用 vanilla Javascript 或 jQuery 的示例


我一起破解的 jQuery 解决方案,但不确定它是否可以作为永久解决方案,想法?

$('a').each(function(index){
    if($(this).attr('href').indexOf('#') == 0){
        $(this).attr('href', (window.location.href).replace(/#.*$/, '')
            + $(this).attr('href'));
    }
});

【问题讨论】:

    标签: javascript html url fragment-identifier


    【解决方案1】:

    好的,我想我现在明白了这个问题了。

    这已在 Google Chrome 和 Firefox 中进行了测试。

    在正文末尾添加此 javascript:

    base=document.getElementsByTagName("base"); 
    base=base[0].href;
    
    links=document.getElementsByTagName('a');
    
    for(index in links){
        if(links[index].href.indexOf(base+"#")==0){
            links[index].href=document.location+links[index].href.slice(links[index].href.indexOf("#"));
        }
    }
    

    【讨论】:

      【解决方案2】:

      不要使用相对网址。基本标签不会影响/homehttp://google.com 等网址,但会影响about/ususers/12

      【讨论】:

      • 谢谢@Jcubed - 我很欣赏你的意见,但这并不能回答我的问题。我使用生成的相对 URL 作为设计选择有几个原因,呃,我使用 <base> 标记,只有片段的锚点会中断。
      • 基本上,仅在片段上。 <base> 处理相对 URL 是最重要的。
      猜你喜欢
      • 2013-06-27
      • 2011-04-25
      • 2013-05-11
      • 2015-11-27
      • 2013-09-28
      • 1970-01-01
      • 2015-09-28
      • 2013-06-17
      • 1970-01-01
      相关资源
      最近更新 更多