Polymer 未捕获引用错误:事件后未定义聚合物。preventDefault()

Polymer 未捕获引用错误:事件后未定义聚合物。preventDefault(),polymer,Polymer,我得到以下错误: Uncaught ReferenceError: Polymer is not defined 当我单击以下元素上的链接时: <!DOCTYPE html> <html> <head> <script src="bower_components/platform/platform.js"></script> </head> <body> <my-element id="m

我得到以下错误:

Uncaught ReferenceError: Polymer is not defined
当我单击以下元素上的链接时:

<!DOCTYPE html>
<html>
<head>
    <script src="bower_components/platform/platform.js"></script>
</head>
<body>
    <my-element id="my_element"></my-element>
</body>
</html>

<link rel="import" href="bower_components/polymer/polymer.html">
<polymer-element name="my-element">
    <template>
        <a href="#" on-tap="{{linkClicked}}">my link</a>
    </template>
    <script>
        Polymer('my-element', {
            linkClicked: function(event, detail, sender) {
                event.preventDefault();
            }
        });
    </script>
</polymer-element>

聚合物(“my-element”{
点击链接:功能(事件、详细信息、发件人){
event.preventDefault();
}
});
这是一个聚合物错误还是我做错了什么


正如@badsyntax在上面指出的,似乎event.preventDefault()对tap事件不起作用。单击更改为
似乎可以解决阻止导航的问题

您看到的错误:

Uncaught ReferenceError: Polymer is not defined
这似乎是格式错误的HTML的产物,我怀疑这是在加载
polymer.HTML
和执行
元素之间造成竞争条件的原因。清理完HTML后,我再也无法复制它了

这里有一个jsbin,我相信它会按照您的意愿工作:


JS-Bin
控制台清除()
聚合物(“my-element”{
点击链接:功能(事件、详细信息、发件人){
event.preventDefault();
}
});

您是否注意到标记的结构不正确?关闭后,将定义自定义元素。这可能会影响一些事情。实际上,我将html和自定义元素放在单独的文件中,但将它们粘贴到此处以将它们显示在一起。问题与a元素上的href=“#”属性有关;聚合物似乎无法处理“#”值。我明白了,我想我应该澄清一下。我无法重现您的javascript错误。您正在运行什么浏览器和版本?看起来,
event.preventDefault()
在“点击”事件中无法正常工作,但这可能是另一个问题。ubuntu上的chrome 34和Win7上的chrome 35您认为问题出在哪里?Chrome的JavaScript引擎?不,我相信点击事件是由Polymer中的PointerGestures库生成的。我提出了一个bug:tap事件实际上是由polymer手势库现在生成的。
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>

<script>console.clear()</script>
<script src="//www.polymer-project.org/components/platform/platform.js"></script>
<link rel="import" href="//www.polymer-project.org/components/polymer/polymer.html">

<my-element></my-element>

<polymer-element name="my-element">
<template>
  <a href='#' on-click="{{linkClicked}}">my link</a>
</template>
<script>
  Polymer('my-element', {
    linkClicked: function(event, detail, sender) {
      event.preventDefault();
    }
  });
</script>
</polymer-element>

</body>
</html>