代码高亮顶点(Firefox 31)

code highlighting apex (Firefox 31)

Oracle Application Express 代码编辑器只是白底纯文本。没有代码突出显示。如果文本字段失去焦点,我也无法按 "tab"。

我使用的是 firefox 31(无法升级,受此处工作管理员的限制)而且我无法安装插件。我知道您可以使用 Firefox 中的特殊文件夹("chrome"-文件夹/userContent.css)在特定站点上更改 css。我已经用它来更改文本字段的默认大小,因为每次打开编辑页面时它都太小了。

那么你知道我可以在 Apex 中使用的任何框架或脚本吗? (我每次都可以将那个狗屎复制到 jsfiddle.net,但这很糟糕

(我在 Firefox 中也找到了暂存器,它可以 运行 js 和 jquery。有帮助吗?)

[已解决] 因为你不能使用

    <script src = "">

等在纯 js 中,我不得不使用 loadScript。对于 css 个文件,它甚至更复杂,但我已经全部搞定了。

这是我的代码,我 运行 它在暂存器 (firefox) 中。它使用 ACE 将 div 更改为带突出显示的编辑器。单击应用时,我恢复 DOM 中的编辑器更改,但保留 text/code。

    // Load Ace js
    loadScript("http://cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/ace.js", function(){
        //initialization code
    });
    // Load Ace css
    var cssId = 'myCss';  // you could encode the css path itself to generate id..
    if (!document.getElementById(cssId)){
        var head  = document.getElementsByTagName('head')[0];
        var link  = document.createElement('link');
        link.id   = cssId;
        link.rel  = 'stylesheet';
        link.type = 'text/css';
        link.href = 'http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/css/bootstrap.min.css';
        link.media = 'all';
        head.appendChild(link);
    }
    // change textarea to div
    var editorRegion = document.getElementById('F4000_P4651_PLUG_SOURCE_fieldset');
    editorRegion.innerHTML = editorRegion.innerHTML.replace("textarea","div");

    // run ACE
    highlight();


    // Modify the apply Button in Apex to first revert ACE-Editor to normal, then do the usual apply.
    var applyChanges = document.getElementById('B3456326662');
    applyChanges.setAttribute("onclick","modifiedApply()");
    function modifiedApply(){
      close();
      setTimeout(normalApply, 500);
    }
    function normalApply(){
      javascript:apex.submit('Apply_Changes');
    }

    // Revert ACE-Changes, but keep changed text/code.
    function close(){
        var value = editor.getValue();
        editor.destroy();
        var oldDiv = editor.container;
        var newDiv = oldDiv.cloneNode(false);
        newDiv.textContent = value;
        oldDiv.parentNode.replaceChild(newDiv, oldDiv);
        newDiv.outerHTML = newDiv.outerHTML.replace("div","textarea");
        var old_new_old = document.getElementById('F4000_P4651_PLUG_SOURCE');
        old_new_old.textContent = old_new_old.textContent.substring(0, old_new_old.textContent.length - 6);
    }
    var editor;
    function highlight() {
      editor = ace.edit("F4000_P4651_PLUG_SOURCE");
      editor.setTheme("ace/theme/monokai");
      editor.getSession().setUseWorker(false);
      editor.getSession().setMode("ace/mode/javascript");
      document.getElementsByClassName('ace_print-margin')[0].setAttribute("style","left:1000px");
    }


    function loadScript(url, callback){
        var script = document.createElement("script")
        script.type = "text/javascript";

        if (script.readyState){  //IE
            script.onreadystatechange = function(){
                if (script.readyState == "loaded" ||
                        script.readyState == "complete"){
                    script.onreadystatechange = null;
                    callback();
                }
            };
        } else {  //Others
            script.onload = function(){
                callback();
            };
        }
        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);
    }