【问题标题】:Cannot get HTML anchors to work when opening URL with Chrome Ember.js使用 Chrome Ember.js 打开 URL 时无法使 HTML 锚点工作
【发布时间】:2019-03-20 23:24:25
【问题描述】:

我有以下简单的 ember 应用程序(只有一个 application.hbs 文件)。

这里我有几个锚点,希望用户点击一个并进入页面的那个部分(很像wikipedia 中使用的)。

这就是问题所在。如果我单击顶部的链接之一,它可以工作。但是,如果我在 Chrome 中输入锚 URL(即localhost:4200/#midnight_love),该 URL 将加载 Ember 应用程序,但无法跳转到锚。我发现这只发生在 Chrome 中,并且该站点将跳转到 Firefox 和 Internet Explorer 中的锚点。如果您只是复制/粘贴到 ember 应用程序的 application.hbs 中,则重新创建此问题所需的所有代码如下所示。

另外请注意,如果我将此代码简单地粘贴到 HTML 文件中,那么该完全相同的代码将适用于所有浏览器。

Application.hbs

<ul>
<li><a href="#Early_career">1 <span class="toctext">Early career</span></a></li>
<li><a href="#Initial_success">2 <span class="toctext">Initial success</span></a></li>
<li><a href="#What's_Going_On_and_subsequent_success">3 <span class="toctext"><i>What's Going On</i> and subsequent success</span></a></li>
<li><a href="#Last_Motown_recordings_and_European_exile">4 <span class="toctext">Last Motown recordings and European exile</span></a></li>
<li><a href="#Midnight_Love">5 <span class="toctext"><i>Midnight Love</i></span></a></li>
</ul>

<h2><span id="Early_career">Early_career</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="Initial_success"></span>Initial_success</h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="What's_Going_On_and_subsequent_success">What's_Going_On_and_subsequent_success</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="Last_Motown_recordings_and_European_exile">Last_Motown_recordings_and_European_exile</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="">Foo</span></h2>
<h2><span id="Midnight_Love">Midnight_Love</span></h2>

【问题讨论】:

  • 我刚刚在 Firefox 中再次测试过,实际上从 URL 输入时它确实无法跳转到锚点
  • 您的https://en.wikipedia.org/wiki/Marvin_Gaye#Midnight_Love 示例和您的application.hbs 代码在所有浏览器中的工作方式相同。你看到了什么不同?
  • 在 Chrome 中,当我打开一个全新的选项卡并输入“localhost:4200/#Midnight_love”时,它将保留在页面顶部。我想要它做的是跳到“midnight_love”部分。
  • 请检查我的答案并验证它是否有效

标签: javascript html ember.js anchor


【解决方案1】:

window.location 替换为window.location.hash,将以下代码粘贴到您的 controller/application.js

import Controller from '@ember/controller';
import $ from 'jquery';

export default Controller.extend({
  init() {
    this._super(...arguments);
    $(document).ready( function( ) {
      if (window.location.hash)
        window.location = window.location.hash;
    });
  }
})

【讨论】:

  • 控制器而不是路由的任何原因?
  • 你甚至可以在路由中编写相同的代码
猜你喜欢
  • 2013-05-05
  • 1970-01-01
  • 2018-03-09
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多