Javascript 如何加载ace编辑器

Javascript 如何加载ace编辑器,javascript,html,cdn,code-editor,Javascript,Html,Cdn,Code Editor,我正在尝试使用Ace代码编辑器库(),但遇到了问题。根据嵌入指南,这应该从Amazons CDN加载所需的js文件 <script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script> 我还尝试将ace库src min文件夹放在本地,并用 <script src="/js/ace/ac

我正在尝试使用Ace代码编辑器库(),但遇到了问题。根据嵌入指南,这应该从Amazons CDN加载所需的js文件

<script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
我还尝试将ace库src min文件夹放在本地,并用

<script src="/js/ace/ace.js" type="text/javascript" charset="utf-8"></script>

最后,我尝试加载ace src min文件夹中的所有js资源,但也失败了,出现了错误:S

我无法将所有代码粘贴到注释中,因此我将通过更新这个来回答您的问题。这对我来说很好:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>HTML</title>
    <style>
        #editor { 
                position: absolute;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
            }
    </style>
</head>
<body>
    <div id="editor">
        function foo(items) {
            var x = "All this is syntax highlighted";
            return x;
        }
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.6/ace.js" type="text/javascript" charset="utf-8"></script>
    <script>
        var editor = ace.edit("editor");
        editor.setTheme("ace/theme/monokai");
        editor.getSession().setMode("ace/mode/javascript");
    </script>
</body>
</html>
在那之后,它应该会起作用

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Credentials: "true"
</IfModule>
更新

我没有彻底测试这个部件,但它应该可以工作

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Credentials: "true"
</IfModule>

标题集访问控制允许原点“*”
标题集访问控制允许凭据:“true”

祝你好运

我知道这不能准确回答你的问题,但我写这篇文章是为了那些登上这一页并在哪里遇到同样问题的人

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Credentials: "true"
</IfModule>
不要工作

我在Chrome上也有同样的问题。我在Firefox和Opera中测试了我的站点,结果一切正常。我不断得到
uncaughtrangeerror:加载页面时超过了最大调用堆栈大小
错误

解决方案是清空Chrome的缓存,然后它又能工作了。即使是
控制/命令+shift+r
控制+F5
也不起作用。我必须进入设置并清空缓存


再次,我知道这只是部分相关,但这是为其他谁在这一页土地

正确答案在第一条评论中:

尝试此编辑器.getSession().setUseWorker(false);看看它是否还在 失败。本地服务器不起作用,因为它依赖于其他在线服务器 相关文件。这就是相对GET失败的原因。我不是 使用第一个联机链接tho获取任何错误。也许是什么 否则会中断您的javascript吗?你能展示一个更完整的版本吗 你的HTML/JS文件


-Allendar,3月24日14:25

我在试图完成这项工作时遇到了麻烦。ACE主页中给出的代码对我不起作用。我的所有文件都在本地目录中,但如果您愿意,可以使用CDN

我将ace目录从
lib/ace
放入我的
static/
目录中。将该部分更改为您自己的位置

我必须使用Require.js api来加载ace。这是对我有用的代码:

<!DOCTYPE html>
<html lang="en">
<head>
<title>ACE in Action</title>
<style type="text/css" media="screen">
    #editor { 
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
    }
</style>
</head>
<body>

<div id="editor">
    function foo(items) {
    var x = "All this is syntax highlighted";
    return x;
    }
</div>
<script type="text/javascript" src="/static/require.js"></script>
<script>
    require.config({
        baseUrl: window.location.protocol + "//" + window.location.host
            + window.location.pathname.split("/").slice(0, -1).join("/"),

        paths: {
            ace: "/static/ace"
        }
    });

    require(["ace/ace"], function (ace) {
        var editor = ace.edit("editor");
        editor.setTheme("ace/theme/monokai");
        editor.getSession().setMode("ace/mode/javascript");
    });
</script>
</body>
</html>

王牌
#编辑{
位置:绝对位置;
排名:0;
右:0;
底部:0;
左:0;
}
功能foo(项目){
var x=“所有这些都是语法突出显示的”;
返回x;
}
require.config({
baseUrl:window.location.protocol+“/”+window.location.host
+window.location.pathname.split(“/”).slice(0,-1.join(“/”),
路径:{
ace:“/static/ace”
}
});
要求([“ace/ace”],功能(ace){
变量编辑器=ace.edit(“编辑器”);
编辑:setTheme(“ace/theme/monokai”);
editor.getSession().setMode(“ace/mode/javascript”);
});
资料来源:


如果出现一些疯狂的错误,请签出此页面:

尝试此
editor.getSession().setUseWorker(false)并查看它是否仍然失败。本地文件不起作用,因为它依赖于其他联机相对文件。这就是相对GET失败的原因。我使用第一个在线链接tho没有收到任何错误。可能是其他什么东西干扰了你的javascript?你能展示你的HTML/JS文件的更完整版本吗?真奇怪,firefox中也出现了错误,在我添加了你给我的行之后,它工作了,然后我删除了链接,它也工作了:S:S:S你是说你删除了在线链接?把
放在“严格使用”上中,如果您看到Firebug错误地删除了一个不存在的对象,请检入Firebug。除非你检查它,否则它可能不会显式地显示错误。啊,好吧,忘了我上次说的话。事实证明,为了查看代码编辑器,我需要从演示中添加css。这就是为什么我认为它不起作用,但是我仍然看到错误无法加载worker ace.js:1,但是编辑器工作正常。对于像我这样的人来说,找到这篇文章是因为ace不再从上面的cloudfront url工作,你现在应该使用例如,而不是Woome work,谢谢!!,我将试一试,看看它是否有效,谢谢你的帮助很高兴我能帮忙:)。请回到这个答案,如果它仍然给你带来问题,我会尝试研究它。似乎修复错误信息比解决它更好。工人是一种优化技术,应该包括在内,而不是避免。
<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Credentials: "true"
</IfModule>
editor.getSession().setUseWorker(false);
<!DOCTYPE html>
<html lang="en">
<head>
<title>ACE in Action</title>
<style type="text/css" media="screen">
    #editor { 
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
    }
</style>
</head>
<body>

<div id="editor">
    function foo(items) {
    var x = "All this is syntax highlighted";
    return x;
    }
</div>
<script type="text/javascript" src="/static/require.js"></script>
<script>
    require.config({
        baseUrl: window.location.protocol + "//" + window.location.host
            + window.location.pathname.split("/").slice(0, -1).join("/"),

        paths: {
            ace: "/static/ace"
        }
    });

    require(["ace/ace"], function (ace) {
        var editor = ace.edit("editor");
        editor.setTheme("ace/theme/monokai");
        editor.getSession().setMode("ace/mode/javascript");
    });
</script>
</body>
</html>