SWT浏览器评估(..)驻留在.JS文件中时无法调用javascript函数

时间:2018-07-11 15:04:16

标签: javascript css eclipse-plugin swt eclipse-rcp

我使用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来实现这一目标。

问题:

  1. 在App.js中,我能够使用Eclipse SWT提供的Browser Function API来调用Java方法。但是,当将JS移动到.js文件时,似乎没有发生反向操作(从JAVA SWT调用JS函数)。

  2. 如果我的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文件吗?

任何帮助将不胜感激!

0 个答案:

没有答案