我使用SWT浏览器对象加载这样的网页:
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微调器,它将基于标志 'loaded' 执行,如下所示:
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>
目标:
该想法是在按钮单击事件发生之前显示忙碌的微调框(自旋圆),直到完成背景操作为止。
注意: 我正在使用Angular JS来实现这一目标。
问题:
在App.js中,我能够使用Eclipse SWT提供的Browser Function API来调用Java方法。但是,当将JS移动到.js文件时,似乎没有发生反向操作(从JAVA SWT调用JS函数)。
如果我的javscript代码在如下所示的HTML文件中,则browser.evaluate("return stopBusySpin();");
似乎可以工作。
<script type=text/javascript>
function stopBusySpin(){
//$scope.loaded=true;
alert("test")
}
</script>
仅当我将javascript代码移动到单独的JS文件时,我才遇到问题。 由于我使用的是“ Angular JS”,因此我无法在HTML页面中使用javascript代码,因此需要将其移至JS文件。
我怀疑Java类无法找到 App.js 文件,因此browser.evaluate(..)
方法无法调用'App.js'中定义的函数。 / p>
有什么办法告诉SWT浏览器找到App.JS文件吗?
任何帮助将不胜感激!