“找不到变量”时将字符串从java发送到javascript
"Can't find variable" when sending string from java to javascript.
所以我正在尝试在用java编写的桌面应用程序中实现谷歌地图。事实证明,这是一项比我想象的更艰巨的任务,尤其是在我缺乏技能的情况下。我以前从未在这里提交过问题,但我会尝试按照我在研究时看到的方式去做。
这是我的 java 类:
package GUI;
import java.net.URL;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebEvent;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class JavaFXGoogleMaps extends Application {
private Scene scene;
MyBrowser myBrowser;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("SHEEPTRACKER3000");
primaryStage.setWidth(400);
primaryStage.setHeight(300);
myBrowser = new MyBrowser();
scene = new Scene(myBrowser, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
static class MyBrowser extends Region {
HBox toolbar;
static WebView webView = new WebView();
static WebEngine webEngine = webView.getEngine();
public MyBrowser() {
final URL urlGoogleMaps = getClass().getResource(
"GoogleMapsV3.html");
webEngine.load(urlGoogleMaps.toExternalForm());
webEngine.setJavaScriptEnabled(true);
getChildren().add(webView);
webEngine.setOnAlert(new EventHandler<WebEvent<String>>() {
@Override
public void handle(WebEvent<String> arg0) {
System.out.println("We are here");
webEngine
.executeScript("document.getElementById('test').innerHTML = 'the new text';");
webEngine.executeScript("document.setNewMarker()");
webEngine
.executeScript("document.setNewMarkerWithParameters(nAME-63.44-10.39)");
// webEngine.load(urlGoogleMaps.toExternalForm());
// getChildren().add(webView);
}
});
}
}
}
这是我的 html 文档:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAGiYaSPuB9Mx2t37gy9yhUR_QOUwdTWE0&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myCenter = new google.maps.LatLng(63.43,10.39)
var mapOptions = {
center: myCenter,
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
var tilesloaded=true;
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
if(tilesloaded ==true){
window.alert();
tilesloaded=false;
}
});
}
document.setNewMarker = function setNewMarker(){
var marker=new google.maps.Marker({
position:new google.maps.LatLng(63.43,10.39),
icon:'sheep1.png',
map:map,
});
}
document.setNewMarkerWithParameters = function setNewMarkerWithParameters(info){
var array = info.split('-');
var a = array[0], b = array[1], c = array[2];
var lat = parseFloat(b);
var longi = parseFloat(c);
var name = parseString(a);
var marker=new google.maps.Marker({
position:new google.maps.LatLng(lat,longi),
icon:'sheep1.png',
map:map,
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<h1 id="test"> Does dis work?</h1>
<div id="map_canvas" style="width:400px; height:300px"></div>
</body>
</html>
我已经在这一点上待了一段时间了,学校的项目截止日期即将到来。我收到错误消息"找不到变量'名称'",我不明白这意味着什么。为了将其置于上下文中,我正在尝试在java中创建一个函数,其中我迭代[name-lat-long]形式的数组并向地图添加标记。但是,由于出现错误,我无法到达那里。name 变量尚未使用,因为我正在尝试在进一步之前使这部分代码正常工作。但后来我希望能够单击标记并在该位置找到对象的名称。任何反馈将不胜感激。
在这一行中:
webEngine
.executeScript("document.setNewMarkerWithParameters(nAME-63.44-10.39)");
。你告诉引擎执行 document.setNewMarkerWithParameters
函数,传入此表达式的结果:
名字- 63.44- 10.39
例如,变量nAME
减去这两个浮点数。我猜你还没有在任何地方定义变量nAME
。
但是在你的函数中,看起来你期望它是一个字符串。㞖:
webEngine
.executeScript("document.setNewMarkerWithParameters('nAME-63.44-10.39')");
// Note the quotes -------------------------------------^----------------^
你还必须替换
var name = parseString(a);
跟
var name = a;
split 无论如何都会返回一个字符串,据我所知,parseString 在 java 脚本中不存在(如果您需要使用 toString())
我完全能够像这样运行代码(使用 T.J. Crowder 提出的解决方案并删除 parseString)
相关文章:
- java.net和javascript之间正则表达式的差异
- 如何使用json将对象列表从java转换为javascript
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- 如何将变量数据从Java类获取到JavaScript
- Java/Javascript-从客户端获取ip
- Apache Thrift Java-Javascript communication
- Firebase服务器发送事件-如何构建Java/JavaScript客户端
- Java/JavaScript日期:这是真的吗
- XMLHttpRequest java javascript
- 在Java / JavaScript中解析ISO-8601持续时间
- 使用java javascript脚本API操作HTML节点
- Java/Javascript->多个用户在同一个sql数据源上工作,必须在前端保持一致
- 如何在Java/javascript中每天更改一次变量的值
- 使用GWT/Java/JavaScript滚动到可滚动对象的特定位置
- 支持节点大小的Java/JavaScript图形布局库
- 在java/javascript浏览器选项卡的登录控制
- 在Java / Javascript中自动搜索YouTube内容
- HTMLUNIT java javascript ajax
- 使用JavaScript格式化Java/JavaScript