SWT Browservaluate(..) не может вызвать функцию javascript, когда она находится в файле.JS
Я использую объект SWT Browser для загрузки веб-страницы следующим образом:
Browser browser = new Browser(parent, SWT.BORDER);
browser.setUrl("C:\\Users\\XXXXXXXXX\\blockproperty.html");
У меня есть кнопка на странице HTML, как показано ниже, которая вызывает функцию JS, когда происходит событие нажатия кнопки:
blockproperty.html
<div class="pull-right ">
<button type="button" ng-click="undeployprojects()" class="btn btn-default margin-l-1">UnDeploy Selected Projects </button>
<button type="button" ng-click="deployprojects()" class="btn btn-default margin-l-1">Deploy Selected Projects </button>
</div>
У меня есть файл JS (называемый app.js), который вызывается со страницы HTML, когда происходит указанное выше событие нажатия кнопки.
App.js
$scope.deployprojects = function() {
$scope.loaded=false;
$scope.javaprojects = JSON.parse(deployApplication(angular.toJson($scope.tempJavaProject)));
};
// Function to perform undeploy operation
$scope.undeployprojects = function() {
$scope.loaded=false;
$scope.tempJavaProject = JSON.parse(unDeployApplication(angular.toJson($scope.tempJavaProject)));
};
Я также включил спиннер CSS, который будет выполняться на основе флага "загружен", как показано ниже:
CSS
<div class="spinner-container" ng-if="!loaded" style="position:absolute;left:50%;top:50%">
<div class="spin-circle"></div>
<div class="spin-inner-circle"></div>
</div>
ЦЕЛЬ:
Идея состоит в том, чтобы показать занятый спиннер (spin-circle), когда событие нажатия кнопки происходит до тех пор, пока не завершится фоновая операция.
Примечание: я использую Angular JS для достижения этой цели.
Вопросы:
Из App.js я смог вызвать метод Java с помощью API функции браузера, предоставляемого eclipse SWT. Но обратная операция (вызов функции JS из JAVA SWT), по-видимому, не происходит, когда JS был перемещен в файл.js.
Если у меня есть код JavaScript в файле HTML, как показано ниже, то
browser.evaluate("return stopBusySpin();");
похоже на работу.
<script type=text/javascript>
function stopBusySpin(){
//$scope.loaded=true;
alert("test")
}
</script>
Я сталкиваюсь с проблемой, только если я перемещаю код JavaScript в отдельный файл JS. Поскольку я использую Angular JS, у меня не может быть кода javascript внутри HTML-страницы, и, следовательно, мне нужно переместить его в файл JS.
Я подозреваю, что класс Java не смог найти файл App.js и, следовательно, browser.evaluate(..)
Метод не может вызвать функцию, определенную в "App.js".
Есть ли способ сказать браузеру SWT, чтобы найти файл App.JS??
Любая помощь приветствуется!!