java - 将非常大的变量从 Java 应用程序传递到 Javascript

标签 java javascript html

将非常大的字符串(几兆字节)从 Java 应用程序导出到页面 JavaScript 的最快方法是什么?目前,浏览器花了很长时间才停止运行。

这是我用来修改 DOM 的代码:

window = JSObject.getWindow(this);
document = (JSObject) window.getMember("document");
for (int i = 0; i < encHexFileUploadStr.length(); i++){
    char c = encHexFileUploadStr.charAt(i); 
    document.eval("document.getElementById('encOutgoingData').value += '"+c+"';");
    if (i % 100 == 0) document.eval("console.log("+i+");");
}

在此之前,我尝试直接一次性分配 encHexFileUploadStr 变量,但这并没有更好。

有什么好的方法可以做到这一点,而且速度不那么慢吗?

谢谢!

最佳答案

我没有尝试将您提到的数据量从 Java 应用程序传输到网页,但是,如果您使用 document.eval,您遇到的性能问题很可能是由于 eval 所需的处理造成的陈述。另一种方法是直接调用执行实际数据更新工作的 JavaScript 方法。以下是如何使用此方法的示例:

Java

JSObject jso = JSObject.getWindow(this);
// invoke JavaScript method updateData with parameter encHexFileUploadStr
jso.call("updateData", new String[] { encHexFileUploadStr });

JavaScript

function updateData(s) {
    document.getElementById('encOutgoingData').value = s;
}

关于java - 将非常大的变量从 Java 应用程序传递到 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456827/

相关文章:

javascript - 将选择选项和 optgroup 存储在 JavaScript 数组中

javascript - 我可以在 ngView 中使用哪些属性来显示当前路由的模板?

http-equiv 上的 Javascript Hook ="refresh"

javascript - 如果函数有参数则不起作用

javascript - 如果 URL 中没有片段标识符,网站将无法完全加载

html - 设计一个 float 登录 <div> 问题

java - 从启动器隐藏应用程序图标

java - 有什么方法可以让 Eclipse 始终使用常见的 VM args 来运行 JUnit 测试?

java - 如何在一个循环中读取多个数组?

java - 蓝牙客户端-服务器通信[java]