2011-06-23 31 views
1

從Java應用程序向頁面JavaScript中導出非常大的字符串(幾兆字節)的最快方法是什麼?目前,瀏覽器需要很長時間纔會停下來。從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變量之前,那是再好不過的。

有沒有什麼好的方法可以做到這一點並不那麼慢?

謝謝!

+0

轉換評論:這看起來可怕 'document.eval(「文件。 getElementById('encOutgoingData')。value + ='「+ c +」';「);'怎麼樣不使用eval – mplungjan

回答

0

我還沒有試圖將您從Java應用程序中提到的數據量轉移到網頁上,但是,如果您使用的是document.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; 
} 
+0

這很好,非常感謝! – Mark452452

0

我會打破串塊結合克里斯的建議的1024字節或類似內容,並附加到JavaScript中的字符串,最後在JavaScript中將字符串複製到字段

How do I optimize this method for breaking a string in chunks?

而且在循環,使它成爲一個習慣,這樣做

for (int i = 0, n=something.length();i<n; i++){ 

而不是

for (int i = 0; i < something.length(); i++){ 
+0

該鏈接幫助了很多,謝謝。 – Mark452452