【问题标题】:Uncaught ReferenceError: Polymer is not defined after event.preventDefault()未捕获的 ReferenceError:在 event.preventDefault() 之后未定义聚合物
【发布时间】:2014-07-16 05:30:58
【问题描述】:

我收到以下错误:

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>

这是 Polymer 错误还是我做错了什么?

http://jsbin.com/cuxep/1/edit?html,output

【问题讨论】:

  • 您是否注意到您的标记结构不正确?您在关闭 之后定义自定义元素。这可能会影响事情。
  • 实际上,我在单独的文件中有 html 和自定义元素,但将它们粘贴到此处以将它们一起显示。
  • 问题与 a 元素的 href="#" 属性有关;看来 Polymer 无法处理“#”值。
  • 我明白了,我想我会澄清一下。我无法重现您的 javascript 错误。您正在运行什么浏览器和版本? event.preventDefault() 似乎对于“点击”事件没有按预期工作,但这可能是一个不同的问题。
  • ubuntu 上的 chrome 34 和 win7 上的 chrome 35

标签: polymer


【解决方案1】:

正如@badsyntax 上面指出的那样,event.preventDefault() 似乎不适用于点击事件。更改为on-click 似乎可以解决阻止导航的问题。

你看到的错误:

Uncaught ReferenceError: Polymer is not defined

这似乎是 HTML 格式错误的产物,我怀疑这会导致加载 polymer.html 和正在执行的 &lt;script&gt; 元素之间出现竞争情况。清理 HTML 后,我不再能够重现它。

这是一个 jsbin,我相信你的意图是:http://jsbin.com/boweliwe/1/edit

<!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>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 2023-01-23
  • 2016-11-03
  • 2011-01-05
相关资源
最近更新 更多