代码之家  ›  专栏  ›  技术社区  ›  pdu

Turbolinks外部javascript(此处:ACE编辑器)

  •  2
  • pdu  · 技术社区  · 12 年前

    我正在尝试在一个使用涡轮链接的页面中实现ACE编辑器。但是,只有当我直接调用该页面或重新加载该页面时,编辑器才能工作。导航到它不会触发使编辑器工作所需的每一个步骤。

    当前集成:

    <script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.8/require.js" type="text/javascript" charset="utf-8"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/ace.js" type="text/javascript" charset="utf-8"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/mode-html.js" type="text/javascript" charset="utf-8"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/mode-css.js" type="text/javascript" charset="utf-8"></script>
    
    <script type="text/javascript" charset="utf-8">
      function initialize_editor() {
        var editor = ace.edit("html-editor");
        editor.setTheme("ace/theme/clouds");
        editor.getSession().setMode("ace/mode/html");
        editor.setValue($('#template_html').val());
    
        $('form').on('submit', function(event) {
          $('#template_html').val(editor.getValue());
        });
      }
    
      $(document).ready(initialize_editor);
      $(document).on('page:load', initialize_editor);
    </script>
    

    这抛出了一个 Uncaught TypeError: Cannot read property 'ace/ace' of undefined. 离开页面后,js似乎卡在了页面上,每次加载导航时,我都会得到一个 Uncaught ReferenceError: ace is not defined .

    在这里包含ACE编辑器(或其他外部库)的正确方法是什么?通过链轮加载它们将不起作用,并且在将它们复制到 vendor/javascripts/ 并且需要在链轮清单中列出它们,我很难让它正常运行。

    关于涡轮连杆和正确的方法有什么启示吗?

    1 回复  |  直到 12 年前
        1
  •  0
  •   pdu    12 年前

    我可以通过获取所需的js文件并将它们放入vendor/javascript路径来解决这个问题。空间和选项卡的特殊字符(其他人也在这里报告过)的最初问题可以通过将文件显式存储为带有BOM的utf8来解决。