为什么聚合物库中的链接在添加 target="_self" 之前不起作用

Why links in polymer library doesn't working until you add target="_self"

我的测试站点是聚合物入门套件(高级版)的一点修改版本

并且在您手动添加 target="_self" 或其他属性之前链接将不起作用,即使:

  • ripples effect happens when you click the button
  • as well as link indication appears (the tiny link in the bottom edge of the browser when you hover the button)

按钮的示例代码

<paper-button>
    <a href="{{baseUrl}}contact.html" target="_self">Contact</a>
</paper-button>

我的项目的 app 文件夹中有 bower_components 目录,默认情况下它充满了所有这些元素,但我是否需要在使用之前 bower <component name> install 它或类似的东西或者还有什么可能导致问题?

通常,要在页面上使用 Polymer 元素,该元素应该可以导入到页面中。这通常意味着您将完成几件事:

  1. 运行bower install --save-dev <element-name>。 运行 的确切 Bower 命令可以从 Polymer 元素的 docs page(左下角)复制:

  1. 使用 <link> 标签(例如 <link rel="import" href="bower_components/iron-ajax/iron-ajax.html">)将元素导入页面。

Polymer Starter Kit 的优点之一是它 setup includes downloading all Paper Elements 来自 bower(包括 paper-button)。因此,在您的情况下,您 不需要 需要 运行 bower install 才能使用 paper-button。您在单击按钮时看到波纹这一事实表明您已经下载了 paper-button 元素并导入了 link

测试

我刚刚在 index.html 的抽屉里添加了一个 paper-button 和一个无目标 link 的抽屉:

<body unresolved>
...
    <paper-drawer-panel id="paperDrawerPanel">
      <paper-scroll-header-panel drawer fixed>
...
        <paper-menu attr-for-selected="data-route" selected="[[route]]">
...
          <!-- Your code below... -->
          <paper-button>
            <a href="{{baseUrl}}contact">Contact!</a>
          </paper-button>
        </paper-menu>
      </paper-scroll-header-panel>
...
</body>

并且效果很好:

(我们需要更多上下文来确定问题的原因...)

不确定这是否能解决您的问题,但是

要绑定到 href,请使用属性绑定语法

<a href$="{{baseUrl}}contact.html">Contact</a>

否则某些浏览器会在 Polymer 有机会解析绑定并分配计算出的 URL.

之前尝试解析值 "{{baseUrl}}contact.html"

另见本节末尾 https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#property-binding

Some attributes are special. When binding to style, href, class, for or data-* attributes, it is recommend that you use attribute binding syntax. For more information, see Binding to native element attributes.