【问题标题】:Html base tag breaks the # referenceHtml 基本标签破坏了 # 引用
【发布时间】:2015-08-18 05:49:34
【问题描述】:

我正在使用 Angular 创建一个 HTML5 应用程序。为了工作,我需要在 html 标头中添加基本 URL。

<base href="/">

然后,当我单击脚注时,它不会重定向到正确的 url。

http://micd.herokuapp.com/#fnref2:1

代替

http://micd.herokuapp.com/articles/556acc58cbf0d10b000be0c8#fnref2:1

我想知道你是否有任何线索来解决这个问题。

谢谢!

【问题讨论】:

  • 如果将/articles/556acc58cbf0d10b000be0c8 设置为&lt;base href="/articles/556acc58cbf0d10b000be0c8"&gt; 会怎样?...
  • 它破坏了应用程序,因为请求没有更正确地转发......
  • 有道理。不过值得一试。
  • 有点相关,虽然我不喜欢这些解决方案中的任何一个:stackoverflow.com/questions/8108836/…
  • 谢谢!我想我会找到办法的!

标签: angularjs html base meanjs


【解决方案1】:

我正在使用 markdown-it,所以我通过将路径名添加到每个链接来编辑规则。

var md = window.markdownit()
    .use(window.markdownitFootnote);

md.renderer.rules.footnote_ref = function (tokens, idx) {
  var n = Number(tokens[idx].meta.id + 1).toString();
  var id = 'fnref' + n;
  var uri = window.location.pathname;
  if (tokens[idx].meta.subId > 0) {
    id += ':' + tokens[idx].meta.subId;
  }
  return '<sup class="footnote-ref"><a href="' + uri + '#fn' + n + '" id="' + id + '">[' + n + ']</a></sup>';
};

md.renderer.rules.footnote_anchor = function(tokens, idx) {
  var n = Number(tokens[idx].meta.id + 1).toString();
  var id = 'fnref' + n;
  var uri = window.location.pathname;
  if (tokens[idx].meta.subId > 0) {
    id += ':' + tokens[idx].meta.subId;
  }
  return ' <a href="' + uri + '#' + id + '" class="footnote-backref">\u21a9</a>'; /* ↩ */
};

非特定解决方案:

$(document).ready(function () {
    var pathname = window.location.pathname;
    $('a').each(function () {
       var link = $(this).attr('href');
       if (link.substr(0,1) == "#") {
           $(this).attr('href', pathname + link);
       }
    });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2019-05-05
    • 2017-01-16
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多