Основная проблема с кодом, показанным OP, заключается в том, что i
никогда не читается до второго цикла. Чтобы продемонстрировать, представьте, что вы видите ошибку внутри кода
funcs[i] = function() { // and store them in funcs
throw new Error("test");
console.log("My value: " + i); // each should log its value.
};
Ошибка на самом деле не происходит до тех пор, пока funcs[someIndex]
не будет выполнен ()
. Используя эту же логику, должно быть очевидно, что значение i
также не будет собрано до этой точки. Как только исходный цикл завершится, i++
добавит i
к значению 3
, что приведет к сбою условия i < 3
и завершению цикла. На этом этапе i
является 3
, поэтому, когда используется funcs[someIndex]()
, и i
оценивается, он равен 3 - каждый раз.
Чтобы пройти мимо этого, вы должны оценить i
, поскольку он встречается. Обратите внимание, что это уже произошло в форме funcs[i]
(где есть 3 уникальных индекса). Существует несколько способов захвата этого значения. Один из них - передать его в качестве параметра функции, которая уже несколько раз показана здесь.
Другой вариант - построить объект функции, который сможет закрыть эту переменную. Это может быть выполнено таким образом
funcs[i] = new function() {
var closedVariable = i;
return function(){
console.log("My value: " + closedVariable);
};
};
Вы можете попробовать следующее: https://jdic.dev.java.net/
[/g3]
Или это : http://lobobrowser.org/java-browser.jsp
Вы можете попробовать JEditorPane
, он не интерпретирует продвинутый HTML, ни Javascript, ни продвинутый CSS, но вы можете сами написать эту часть, называемую EditorKit
. Это класс / объект, с которым советуется JEditorPane или как он должен отображать его содержимое.
Я знаю, что это возможно, потому что я пробовал и терпел неудачу (: P), но он может быть устаревшим или устаревшим к настоящему времени я не знаю.
Вы можете использовать SWT для вашего графического интерфейса. Его контроль браузера позволяет вам вставлять IE, Mozilla или Safari (в зависимости от платформы, в которой вы работаете), с небольшой болью.
Вы можете попробовать Webrenderer или Ice Browser
Вы также можете попробовать JWebBrowser от DJ Native Swing: http://djproject.sourceforge.net/ns
Я успешно открыл браузер с Java, используя SWT . Вы можете найти примеры кода о том, как использовать SWT для открытия окна браузера. Это очень легко сделать.
Если вы посмотрите на Launcher Minecraft (старый), просмотрите LoginForm или LauncherFrame, вы сможете узнать этот метод. Существует учебник kippykip на youtube о том, как декомпилировать и отредактировать его: здесь
JxBrowser еще не упоминается. Он включает Mozilla Firefox (Gecko), Apple Safari (WebKit) или Internet Explorer. Руководство для программистов
Если вам нужно чистое решение Java, вы можете попробовать JWebEngine . Это делает HTML 4 очень хорошим. Вы можете использовать его в апплете, веб-сайте Java и на любой платформе. Использование очень просто.
Я считаю, что JWebPane станет официальным способом встроить браузер в приложение java. Он основан на открытом исходном движке - WebKit, который используется в браузерах Apple Safari и Googles Chrome. Подробнее см. в этом блоге .
Взгляните на https://xhtmlrenderer.dev.java.net/
Вы можете встроить браузер в GUI Swing / AWT с помощью API JDIC . Я не вижу упоминания OS X , поэтому он не может быть вам полезен.
Возможно, Chromium Embedded Framework является для вас вариантом. Специфично для Java существует
javacef для SWT: https://github.com/wjywbs/javacef
java-cef для AWT: https://bitbucket.org/chromiumembedded/java-cef
На сегодняшний день самым надежным встраиваемым браузером, с которым я знаком, является тот, что есть в SWT. Фактически, это настолько гибко, что наведение JavaDoc, которое вы можете видеть в Eclipse, на самом деле является браузером, а представление JavaDoc фактически поддерживает такие вещи, как анимация!
Единственный риск с использованием SWT заключается в том, что существуют разные версии библиотеки SWT для разных платформ. Я не уверен, есть ли единая банка, которую вы могли бы включить, чтобы охватить всех.