⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javascriptutil.java

📁 反向的AJAX。最大的特性是我们成为反向的Ajax。DWR1.x允许你用javascript异步的访问java代码。DWR2.0在这上允许你建立异步java访问javascript代码。 反向的Aj
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                output.append(line);                output.append(SPACE);            }            output.append('\n');            return output.toString();        }        catch (IOException ex)        {            log.error("IOExecption unexpected.", ex);            throw new IllegalArgumentException("IOExecption unexpected.");        }    }    /**     * Shrink variable names to a minimum.     * @param text The javascript program to shrink the variable names in.     * @return The shrunk version of the javascript program.     */    public static String shrinkVariableNames(String text)    {        if (text == null)        {            return null;        }        throw new UnsupportedOperationException("Variable name shrinking is not supported");    }    /**     * <p>Escapes the characters in a <code>String</code> using JavaScript String rules.</p>     * <p>Escapes any values it finds into their JavaScript String form.     * Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.) </p>     *     * <p>So a tab becomes the characters <code>'\\'</code> and     * <code>'t'</code>.</p>     *     * <p>The only difference between Java strings and JavaScript strings     * is that in JavaScript, a single quote must be escaped.</p>     *     * <p>Example:     * <pre>     * input string: He didn't say, "Stop!"     * output string: He didn\'t say, \"Stop!\"     * </pre>     * </p>     *     * @param str  String to escape values in, may be null     * @return String with escaped values, <code>null</code> if null string input     */    public static String escapeJavaScript(String str)    {        if (str == null)        {            return null;        }        StringBuffer writer = new StringBuffer(str.length() * 2);        int sz = str.length();        for (int i = 0; i < sz; i++)        {            char ch = str.charAt(i);            // handle unicode            if (ch > 0xfff)            {                writer.append("\\u");                writer.append(hex(ch));            }            else if (ch > 0xff)            {                writer.append("\\u0");                writer.append(hex(ch));            }            else if (ch > 0x7f)            {                writer.append("\\u00");                writer.append(hex(ch));            }            else if (ch < 32)            {                switch (ch)                {                case '\b':                    writer.append('\\');                    writer.append('b');                    break;                case '\n':                    writer.append('\\');                    writer.append('n');                    break;                case '\t':                    writer.append('\\');                    writer.append('t');                    break;                case '\f':                    writer.append('\\');                    writer.append('f');                    break;                case '\r':                    writer.append('\\');                    writer.append('r');                    break;                default:                    if (ch > 0xf)                    {                        writer.append("\\u00");                        writer.append(hex(ch));                    }                    else                    {                        writer.append("\\u000");                        writer.append(hex(ch));                    }                    break;                }            }            else            {                switch (ch)                {                case '\'':                    // If we wanted to escape for Java strings then we would                    // not need this next line.                    writer.append('\\');                    writer.append('\'');                    break;                case '"':                    writer.append('\\');                    writer.append('"');                    break;                case '\\':                    writer.append('\\');                    writer.append('\\');                    break;                default:                    writer.append(ch);                    break;                }            }        }        return writer.toString();    }    /**     * <p>Returns an upper case hexadecimal <code>String</code> for the given     * character.</p>     * @param ch The character to convert.     * @return An upper case hexadecimal <code>String</code>     */    private static String hex(char ch)    {        return Integer.toHexString(ch).toUpperCase(Locale.ENGLISH);    }    /**     * <p>Unescapes any JavaScript literals found in the <code>String</code>.</p>     * <p>For example, it will turn a sequence of <code>'\'</code> and <code>'n'</code>     * into a newline character, unless the <code>'\'</code> is preceded by another     * <code>'\'</code>.</p>     * @param str  the <code>String</code> to unescape, may be null     * @return A new unescaped <code>String</code>, <code>null</code> if null string input     */    public static String unescapeJavaScript(String str)    {        if (str == null)        {            return null;        }        StringBuffer writer = new StringBuffer(str.length());        int sz = str.length();        StringBuffer unicode = new StringBuffer(4);        boolean hadSlash = false;        boolean inUnicode = false;        for (int i = 0; i < sz; i++)        {            char ch = str.charAt(i);            if (inUnicode)            {                // if in unicode, then we're reading unicode                // values in somehow                unicode.append(ch);                if (unicode.length() == 4)                {                    // unicode now contains the four hex digits                    // which represents our unicode chacater                    try                    {                        int value = Integer.parseInt(unicode.toString(), 16);                        writer.append((char) value);                        unicode.setLength(0);                        inUnicode = false;                        hadSlash = false;                    }                    catch (NumberFormatException nfe)                    {                        throw new IllegalArgumentException("Unable to parse unicode value: " + unicode + " cause: " + nfe);                    }                }                continue;            }            if (hadSlash)            {                // handle an escaped value                hadSlash = false;                switch (ch)                {                case '\\':                    writer.append('\\');                    break;                case '\'':                    writer.append('\'');                    break;                case '\"':                    writer.append('"');                    break;                case 'r':                    writer.append('\r');                    break;                case 'f':                    writer.append('\f');                    break;                case 't':                    writer.append('\t');                    break;                case 'n':                    writer.append('\n');                    break;                case 'b':                    writer.append('\b');                    break;                case 'u':                    // uh-oh, we're in unicode country....                    inUnicode = true;                    break;                default:                    writer.append(ch);                    break;                }                continue;            }            else if (ch == '\\')            {                hadSlash = true;                continue;            }            writer.append(ch);        }        if (hadSlash)        {            // then we're in the weird case of a \ at the end of the            // string, let's output it anyway.            writer.append('\\');        }        return writer.toString();    }    /**     * Check to see if the given word is reserved or a bad idea in any known     * version of JavaScript.     * @param name The word to check     * @return false if the word is not reserved     */    public static boolean isReservedWord(String name)    {        return reserved.contains(name);    }    /**     * The array of javascript reserved words     */    private static final String[] RESERVED_ARRAY = new String[]    {        // Reserved and used at ECMAScript 4        "as",        "break",        "case",        "catch",        "class",        "const",        "continue",        "default",        "delete",        "do",        "else",        "export",        "extends",        "false",        "finally",        "for",        "function",        "if",        "import",        "in",        "instanceof",        "is",        "namespace",        "new",        "null",        "package",        "private",        "public",        "return",        "super",        "switch",        "this",        "throw",        "true",        "try",        "typeof",        "use",        "var",        "void",        "while",        "with",        // Reserved for future use at ECMAScript 4        "abstract",        "debugger",        "enum",        "goto",        "implements",        "interface",        "native",        "protected",        "synchronized",        "throws",        "transient",        "volatile",        // Reserved in ECMAScript 3, unreserved at 4 best to avoid anyway        "boolean",        "byte",        "char",        "double",        "final",        "float",        "int",        "long",        "short",        "static",        // I have seen the folowing list as 'best avoided for function names'        // but it seems way to all encompassing, so I'm not going to include it        /*        "alert", "anchor", "area", "arguments", "array", "assign", "blur",        "boolean", "button", "callee", "caller", "captureevents", "checkbox",        "clearinterval", "cleartimeout", "close", "closed", "confirm",        "constructor", "date", "defaultstatus", "document", "element", "escape",        "eval", "fileupload", "find", "focus", "form", "frame", "frames",        "getclass", "hidden", "history", "home", "image", "infinity",        "innerheight", "isfinite", "innerwidth", "isnan", "java", "javaarray",        "javaclass", "javaobject", "javapackage", "length", "link", "location",        "locationbar", "math", "menubar", "mimetype", "moveby", "moveto",        "name", "nan", "navigate", "navigator", "netscape", "number", "object",        "onblur", "onerror", "onfocus", "onload", "onunload", "open", "opener",        "option", "outerheight", "outerwidth", "packages", "pagexoffset",        "pageyoffset", "parent", "parsefloat", "parseint", "password",        "personalbar", "plugin", "print", "prompt", "prototype", "radio", "ref",        "regexp", "releaseevents", "reset", "resizeby", "resizeto",        "routeevent", "scroll", "scrollbars", "scrollby", "scrollto", "select",        "self", "setinterval", "settimeout", "status", "statusbar", "stop",        "string", "submit", "sun", "taint",  "text", "textarea", "toolbar",        "top", "tostring", "unescape", "untaint", "unwatch", "valueof", "watch",        "window",        */    };    private static SortedSet reserved = new TreeSet();    /**     * For easy access ...     */    static    {        // The Javascript reserved words array so we don't generate illegal javascript        reserved.addAll(Arrays.asList(RESERVED_ARRAY));    }    private static final String SPACE = " ";    /**     * How does a multi line comment start?     */    private static final String COMMENT_ML_START = "/*";    /**     * How does a multi line comment end?     */    private static final String COMMENT_ML_END = "*/";    /**     * How does a single line comment start?     */    private static final String COMMENT_SL_START = "//";    /**     * Sometimes we need to retain the comment because it has special meaning     */    private static final String COMMENT_RETAIN = "#DWR";    /**     * The log stream     */    private static final Logger log = Logger.getLogger(JavascriptUtil.class);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -